Des commandes bash pures et dures
Je trouve que beaucoup d'utilisateurs de bash ne connaissent pas certaines astuces utiles liées à des commandes usuelles, parce qu'elles ne sont pas assez mises en avant dans les documentations. Nous allons donc voir ici quelques commandes/astuces bash que tout le monde ne connait pas.
Les expressions : utlisation de "?" :
- Afficher tous les répertoires/fichiers comportant un seul caractère après le point :
ls *.? # ajoutez autant de "?" que vous souhaitez (??? pour trois caractères)
- Afficher tous les répertoires/fichiers comportant 5 caractères :
ls ? # adaptez le nombre de "?"
- Afficher tous les fichiers/répertoires dont le nom débute par "a" ou "b" :
ls [ab]* # vous pouvez remplacer les lettres, et même en ajouter/supprimer
Redirections :
- Rediriger les erreurs renvoyées par une commande :
macommande 2> erreur.file # vous pouvez faire 2>> pour ne pas écraser le erreur.file si il existe
- Rediriger les erreurs renvoyées par une commande vers "nul part" :
macommande 2> /dev/null
- Rediriger le résultat d'une commande dans un fichier qui n'existe pas :
ls | tee my_file
ou
ls > my_file
- Rediriger le résultat d'une commande dans un fichier qui existe (on veut concaténer) :
ls | tee -a my_file
ou
ls >> my_file
- Rediriger le résultat de plusieurs commandes dans un fichier, en restant dans le shell courant :
(cd /root/ ; pwd ; ls) > file
- Rediriger le résultat de plusieurs commandes dans un fichier, en allant dans /root :
{ cd /root/ ; pwd ; ls ;} > file
Voilà globalement des astuces bien utiles mais trop peu utilisées !
Publié le mardi, décembre 29 2009, par Scurz dans la catégorie : Administration système/réseaux - Lien permanent
Commentaires
mercredi, décembre 30 2009
00:34
J'utilise très régulièrement les accolades pour simplifier certaines commandes. L'exemple classique est la copie d'un fichier pour en garder une sauvegarde. Par exemple:
cp Xorg.conf{,.bak}
Est équivalent à :
cp Xorg.conf Xorg.conf.bak
C'est assez simple à comprendre, les accolades sont une forme d'expansion. Le motif complet du mot est répété en concaténant les motifs séparés par des virgules.
Comme un exemple vaut mieux qu'un long discours, on peut très bien faire ceci :
touch fichier.{1,2,3,4}.txt
Pour plus d'informations, je vous renvoie au man de bash à la section "EXPANSION" et la partie "Brace Expansion" en particulier.
Bonne lecture ;)
— tOkeshumercredi, décembre 30 2009
16:32
Petite précision :
Les commandes lancées entre parenthèses vont être exécutées dans un sous-shell .
Par contre, les accolades permettent d'exécuter une série de commandes dans le shell courant.
http://tldp.org/LDP/abs/html/subshe...
— linuxindetailsmercredi, décembre 30 2009
17:28
Le principal interet de tee est de dupliquer le flux (vers la console ET vers le(s) fichier(s))
— smxmercredi, décembre 30 2009
20:32
pour ceux qui veulent sérieusement se mettre au bash, je conseille "bash Cookbook" des éditions O'Reilly
— stridersamedi, janvier 2 2010
15:28
Il manque l'option -d à la commande ls pour qu'elle n'affiche pas le contenu des dits répertoires.
Une redirection utile est aussi 2> &1, cad qu'elle redirige la sortie d'erreures dans la sortie standard. Utile avec tee ! Sinon il y a ausi nohup qui fait ce genre de redirections automatiquement. Il y a encore quelques subtilité concernant l'ordre des plusieures redirections, cf. page man.
Concernant les parenthèses, linuxindetails a déja rapporté l'erreure. Un avantages du sous-shell est l'accès à une copie des variables déclarées dans le shell parent (iow pas besoin d'export, variable de type étendue style array toujours accessibles, ...) sans pouvoir poluer l'environement du shell parent.
— GwBdimanche, janvier 3 2010
10:49
A noter que ces trucs fonctionnent aussi sous d'autres shells, comme ZSH par exemple, que je recommande à tous ceux qui auraient envie de changement. Sinon sympa l'article, bonne continuation :)
— JBmardi, janvier 5 2010
08:55
Je débute donc ce genre d'article est parfait pour me faire progresser rapidement. Merci
— fillemercredi, janvier 6 2010
13:28
Pures oui, dures non ! :)
— Edouardvendredi, mars 19 2010
04:11
Merci pour ce tres bon article. J'espere que d'autres suivront.
— Alison Hurmanvendredi, mars 19 2010
15:28
Merci pour ce tres bon article. J'espere que d'autres suivront.
— Jeremy Bruggervendredi, mars 19 2010
15:39
J'aimerai avoir plus d'informations sur ce theme. Ou pourrais je en trouver s'il vous plait.
— Emilio Rohtert