IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

Script pour créer une commande de suppression de fichiers


Sujet :

Shell et commandes GNU

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 8
    Points : 4
    Points
    4
    Par défaut Script pour créer une commande de suppression de fichiers
    Je cherche:
    - une ligne de commande qui servirait a supprimer tout les fichiers de type *~.* (sauvegarde emacs), *.log, *.aux, *.bbl du répertoire courant.
    - améliorer le script de façon a effacer tout les fichiers de sauvegarde emacs quand je tappe "nettoie emacs" dans le shell (tout en sachant que nettoie est le nom du script et emacs le nom donné pour les *~.*).Faire la même chose les fichiers latex(.bbl & .aux), la même chose pour les .log et enfin tapper "nettoie tout" pour tous les supprimer (toujours dans le répertoire courant).
    - ajouter a ce script les option -i (qui demande confirmation de la suppression) et -f (pour supprimer silencieusement sans demande de confirmation)
    -ajouter un message d'erreur au cas ou l'utilisateur aurait rentré des arguments erronés qui indique comment utiliser ce script.

    Voila si quelqu'un se sent l'ame a me faire ça ba ça serait vraiment cool merci d'avance !

  2. #2
    Expert éminent

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Points : 6 686
    Points
    6 686
    Par défaut
    Bonjour,
    Citation Envoyé par romain.1105
    Voila si quelqu'un se sent l'ame a me faire ça ba ça serait vraiment cool merci d'avance !
    Tu débutes en script shell ? Si oui, il faut te prendre par la main et puis jetter un oeil dans les tutoriaux pour apprendre à écrire ces scripts. Tu crois tout de même que l'on va te le faire ? Il ne faut pas abuser non plus. Je veux que tu m'écrives un début de code et ensuite on te donnera un coup de main.

    Allez courage, nous sommes avec toi

    ++

  3. #3
    Expert éminent
    Avatar de Michaël
    Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2003
    Messages
    3 497
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Juillet 2003
    Messages : 3 497
    Points : 8 241
    Points
    8 241
    Par défaut
    bonjour,
    as-tu essayé de faire quelque chose ? qu'est-ce qui ne marche pas ? quel est le langage utilisé (bash, ksh, etc)

    ça ressemble fortement à un énoncé d'exercice à faire : le forum n'est pas là pour faire tout ton travail mais pour résoudre les problèmes sur des choses que tu as faites !

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    Voila ce que j'ai fais le début semble marcher (en effet il s'agit d'un exercice mais j'ai pas mal planché dessus comme tu peux le voir et il s'agit d'un exo que je cherche a comprendre).


    #!/usr/local/bin/bash
    #rm *~.* *.{log,aux,bbl} /home/rleper86 (exo4 question 1).

    # Question 2
    if test "$1" = "emacs";then rm *~.* /home/rleper86
    fi
    if test "$1" = "latex";then rm *.{aux,bbl} /home/rleper86
    fi
    if test "$1" = "log";then rm *.log /home/rleper86
    fi 2> /dev/null
    if test "$1" = "tout";then rm *~.* *.{log,aux,bbl} /home/rleper86
    fi
    #./nettoie -i log pour éradiquer fichiers log.

    #supprimer avec l'option -r -i -f
    if test "$1" = "-r" -a "$2" = "emacs";then rm -r *~ \#*\#;fi
    if test "$1" = "-r" -a "$2" = "latex";then rm -r *.{aux,bbl} ;fi
    if test "$1" = "-r" -a "$2" = "log";then rm -r *.log ;fi
    if test "$1" = "-r" -a "$2" = "tout";then rm -r *~ *.{log,aux,bbl} \#*\#;fi

    if test "$1" = "-i" -a "$2" = "emacs";then rm -i *~ \#*\#;fi
    if test "$1" = "-i" -a "$2" = "latex";then rm -i *.{aux,bbl} ;fi
    if test "$1" = "-i" -a "$2" = "log";then rm -i *.log ;fi
    if test "$1" = "-i" -a "$2" = "tout";then rm -i *~ *.{log,aux,bbl} \#*\#;fi

    if test "$1" = "-f" -a "$2" = "emacs";then rm -f *~ \#*\#;fi
    if test "$1" = "-f" -a "$2" = "latex";then rm -f *.{aux,bbl} ;fi
    if test "$1" = "-f" -a "$2" = "log";then rm -f *.log ;fi
    if test "$1" = "-f" -a "$2" = "tout";then rm -f *~ *.{log,aux,bbl} \#*\#;fi

  5. #5
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2003
    Messages
    5 602
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 602
    Points : 7 837
    Points
    7 837
    Par défaut
    J'essaie moi aussi dans mon temps libre de comprendre le bash...

    Ton script me pose des questions !
    1) Pourquoi le /home/rleper86
    2) Même question avec le \#*\# devant le ;fi

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    lol oui alors pour le rleper86 c'est mon répertoire courant et le : \#*\# c'est juste pour désigner les fichier #fichier# car sans les "\" le "#" a une fonction précise moi je diss juste que je le veux en tant que caractére.

    j'ai une peu progréssé et voila ce que j'ai
    #!/usr/local/bin/bash

    # Pour la premiére question il suffit de faire rm *~ \#*\# *.{log,aux,bbl}

    # Pour la deuxiéme question:
    if test "$1" = "emacs"
    then rm *~ \#*\#
    fi
    if test "$1" = "latex"
    then rm *.{aux,bbl}
    fi
    if test "$1" = "log"
    then rm *.log
    fi
    if test "$1" = "tout"
    then rm *~ \#*\# *.{log,aux,bbl}
    fi
    Maintenant je cherche a mettre une option -i qui me demande si je souhaite supprimé les fichiers et une option -f qui tue les fichier silencieusement (sans demande d'autorisation et peu de message d'erreur).

  7. #7
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2003
    Messages
    5 602
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 602
    Points : 7 837
    Points
    7 837
    Par défaut
    C'est quoi la forme des sauvegardes emacs ?

  8. #8
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    fic.txt~ ou fic~

  9. #9
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    if test "$1" = "-i" -a test "$2" = "emacs"
    then rm -i *~ \#*\#
    fi
    if test "$1" = "-f" -a test "$2" = "emacs"
    then rm -f *~ \#*\#
    fi
    if test "$1" = "-i" -a test "$2" = "latex"
    then rm -i *.{aux,bbl}
    fi
    if test "$1" = "-f" -a test "$2" = "latex"
    then rm -f *.{aux,bbl}
    fi
    if test "$1" = "-i" -a test "$2" = "log"
    then rm -i *.log
    fi
    if test "$1" = "-f" -a test "$2" = "log"
    then rm -f *.log
    fi
    if test "$1" = "-i" -a test "$2" = "tout"
    then rm -i *~ \#*\# *.{log,aux,bbl}
    fi
    if test "$1" = "-f" -a test "$2" = "tout"
    then rm -f *~ \#*\# *.{log,aux,bbl}
    fi
    est-ce correct quelqu'un peut-il le tester pour moi je n'ai pas linux s'il vous plait ?

  10. #10
    Modérateur
    Avatar de ggnore
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 472
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 472
    Points : 4 029
    Points
    4 029
    Par défaut
    Je te conseille d'utiliser ce tutorial pour tes scripts. Tes if sont assez moches.

  11. #11
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par ggnore
    Je te conseille d'utiliser ce tutorial pour tes scripts. Tes if sont assez moches.
    merci ça m'a beaucoup aidé(ironique) le soucis n'est pas au niveau des if il me balance un message du genre "bad interpreter:Nosuch file or directory"

  12. #12
    Expert éminent

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Points : 6 686
    Points
    6 686
    Par défaut
    Bonjour,

    Le code suivant:
    ne fonctionne pas en sh

    Les fichiers emacs ont une extension ? Depuis quand

    Il faudrait mieux afficher l'énoncé de l'exercice, ce serait à mon avis plus simple

    ++

  13. #13
    Modérateur
    Avatar de ggnore
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 472
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 472
    Points : 4 029
    Points
    4 029
    Par défaut
    Essaie de faire et tu trouveras très certainement le chemin à mettre dans le première ligne de ton code.

    Par ailleurs, tu peux être ironique, c'est ton droit, mais tu n'as pas l'air exactement au point niveau programmation en shell, donc je te propose une documentation très bien faite pour t'améliorer

  14. #14
    Expert éminent

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Points : 6 686
    Points
    6 686
    Par défaut
    Bonjour,

    Le script est disponible => script nettoie. Avant tout chose, il est loin d'être parfait. Il fonctionne mais pour la partie latex, il gère uniquement l'extension *.bbs, la principale. Tu diras à ton enseignant que tonton Olivier à changé l'énoncé de l'exercice Il fonctionne avec Sh, Bash et Zsh.

    Pour commencer, tu dois le rendre exécutable:
    Lancement du programme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ./nettoie options parameter
    Des exemples d'utilisation:
    donnera:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    usage: nettoie [-a] [-v] [-h]
                   [-i | -f] parameter [latex | emacs | log | tout]
    Tu veux effacer les fichiers de log avec confirmation:
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ./nettoie --interactive log
    Si pas de fichiers:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nettoie: aucun fichier(s) log à supprimer
    Si présence de fichiers:
    Si tu ne le supprimes pas, cela donne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nettoie: fichier(s) log non supprimé(s)
    et l'inverse:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nettoie: fichier(s) log supprimé(s)
    Tu veux maintenant effacer les fichiers de log sans confirmation:
    ou
    Si pas de fichiers:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nettoie: aucun fichier(s) log à supprimer
    à l'inverse:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nettoie: fichier(s) log supprimé(s)
    Si tu utilises l'option -a ou --author, cela donne tout simplement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Olivier Regnier => à remplacer par ton Nom et Prénom
    Pour l'option -v ou --version:
    Pour l'option -h ou --help:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    voir le deuxième exemple
    A toi de découvrir toutes les fonctionnalités. Comme expliqué au début, ce script est loin d'être parfait et il demande une seule chose à être améliorer.

    ++

Discussions similaires

  1. Réponses: 0
    Dernier message: 13/01/2015, 13h56
  2. Script pour exécuter une commande
    Par popps dans le forum Shell et commandes GNU
    Réponses: 13
    Dernier message: 20/08/2014, 16h02
  3. Un Script pour créer une connexion
    Par Deallyra dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 23/11/2007, 08h19
  4. Réponses: 22
    Dernier message: 03/08/2007, 15h57
  5. Réponses: 3
    Dernier message: 17/08/2006, 11h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo