Précédent   Forum des professionnels en informatique > Systèmes > Linux > Applications > Shell
Shell Vos questions sur l'utilisation des commandes shell
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 07/12/2006, 12h14   #1
Invité de passage
 
Inscription : décembre 2006
Messages : 8
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 8
Points : 2
Points : 2
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 !
romain.1105 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/12/2006, 12h59   #2
Rédacteur
 
Inscription : juillet 2004
Messages : 2 573
Détails du profil
Informations personnelles :
Âge : 34

Informations forums :
Inscription : juillet 2004
Messages : 2 573
Points : 1 973
Points : 1 973
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

++
__________________
.Olivier
Olivier Regnier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/12/2006, 13h00   #3
Rédacteur/Modérateur
 
Avatar de Michaël
 
Michaël Todorovic
Ingénieur systèmes et réseaux
Inscription : juillet 2003
Messages : 3 493
Détails du profil
Informations personnelles :
Nom : Michaël Todorovic
Âge : 25
Localisation : France, Paris (Île de France)

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

Informations forums :
Inscription : juillet 2003
Messages : 3 493
Points : 5 899
Points : 5 899
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 !
Michaël est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/12/2006, 13h49   #4
Invité de passage
 
Inscription : décembre 2006
Messages : 8
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 8
Points : 2
Points : 2
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).


Citation:
#!/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
romain.1105 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/12/2006, 17h30   #5
Rédacteur/Modérateur
 
Avatar de troumad
 
Homme Bernard SIAUD
Enseignant
Inscription : novembre 2003
Messages : 4 400
Détails du profil
Informations personnelles :
Nom : Homme Bernard SIAUD
Âge : 44
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Enseignant
Secteur : Enseignement

Informations forums :
Inscription : novembre 2003
Messages : 4 400
Points : 4 944
Points : 4 944
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
__________________
Modérateur Mandriva Linux
Amicalement VOOotre
Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
Mes tutoriels
troumad est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/12/2006, 17h51   #6
Invité de passage
 
Inscription : décembre 2006
Messages : 8
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 8
Points : 2
Points : 2
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
Citation:
#!/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).
romain.1105 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/12/2006, 18h09   #7
Rédacteur/Modérateur
 
Avatar de troumad
 
Homme Bernard SIAUD
Enseignant
Inscription : novembre 2003
Messages : 4 400
Détails du profil
Informations personnelles :
Nom : Homme Bernard SIAUD
Âge : 44
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Enseignant
Secteur : Enseignement

Informations forums :
Inscription : novembre 2003
Messages : 4 400
Points : 4 944
Points : 4 944
C'est quoi la forme des sauvegardes emacs ?
__________________
Modérateur Mandriva Linux
Amicalement VOOotre
Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
Mes tutoriels
troumad est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/12/2006, 18h11   #8
Invité de passage
 
Inscription : décembre 2006
Messages : 8
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 8
Points : 2
Points : 2
fic.txt~ ou fic~
romain.1105 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/12/2006, 18h31   #9
Invité de passage
 
Inscription : décembre 2006
Messages : 8
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 8
Points : 2
Points : 2
Citation:
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 ?
romain.1105 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/12/2006, 19h24   #10
Modérateur
 
Avatar de ggnore
 
Inscription : juillet 2004
Messages : 2 245
Détails du profil
Informations personnelles :
Âge : 33

Informations forums :
Inscription : juillet 2004
Messages : 2 245
Points : 1 902
Points : 1 902
Je te conseille d'utiliser ce tutorial pour tes scripts. Tes if sont assez moches.
__________________
Toutes les vertus des hommes se perdent dans l’intérêt comme les fleuves se perdent dans la mer.
ggnore est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2006, 14h08   #11
Invité de passage
 
Inscription : décembre 2006
Messages : 8
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 8
Points : 2
Points : 2
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"
romain.1105 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2006, 15h53   #12
Rédacteur
 
Inscription : juillet 2004
Messages : 2 573
Détails du profil
Informations personnelles :
Âge : 34

Informations forums :
Inscription : juillet 2004
Messages : 2 573
Points : 1 973
Points : 1 973
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

++
__________________
.Olivier
Olivier Regnier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2006, 16h35   #13
Modérateur
 
Avatar de ggnore
 
Inscription : juillet 2004
Messages : 2 245
Détails du profil
Informations personnelles :
Âge : 33

Informations forums :
Inscription : juillet 2004
Messages : 2 245
Points : 1 902
Points : 1 902
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
__________________
Toutes les vertus des hommes se perdent dans l’intérêt comme les fleuves se perdent dans la mer.
ggnore est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/12/2006, 02h28   #14
Rédacteur
 
Inscription : juillet 2004
Messages : 2 573
Détails du profil
Informations personnelles :
Âge : 34

Informations forums :
Inscription : juillet 2004
Messages : 2 573
Points : 1 973
Points : 1 973
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 :
./nettoie options parameter
Des exemples d'utilisation:
donnera:
Code :
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 :
./nettoie --interactive log
Si pas de fichiers:
Code :
nettoie: aucun fichier(s) log à supprimer
Si présence de fichiers:
Si tu ne le supprimes pas, cela donne:
Code :
nettoie: fichier(s) log non supprimé(s)
et l'inverse:
Code :
nettoie: fichier(s) log supprimé(s)
Tu veux maintenant effacer les fichiers de log sans confirmation:
ou
Si pas de fichiers:
Code :
nettoie: aucun fichier(s) log à supprimer
à l'inverse:
Code :
nettoie: fichier(s) log supprimé(s)
Si tu utilises l'option -a ou --author, cela donne tout simplement:
Code :
Olivier Regnier => à remplacer par ton Nom et Prénom
Pour l'option -v ou --version:
Pour l'option -h ou --help:
Code :
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.

++
__________________
.Olivier
Olivier Regnier est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h15.


 
 
 
 
Partenaires

Hébergement Web