Etendre les possibilités de Bash avec l'expansion des accolades
On continue avec les astuces shell qui peuvent nous faire gagner un temps précieux. Ici nous allons voir comment pousser les possibilités de Bash, grâce à l'expansion des accolades.
Les accolades en Bash permettent principalement de reprendre des séquences et d'éviter de les retaper. Voici un premier exemple pour mieux comprendre :
$ touch fichier{1,2,3}
$ ls fichier*
fichier1 fichier2 fichier3
Ici, nous avons créé, en une seule ligne de commande, trois fichiers. Difficile donc de faire plus rapide.
L'avantage est que l'on peut également utiliser plusieurs séries d'accolades à suivre :
$ touch {document,exemple}{.html,.pdf}
$ ls document.* exemple.*
document.html document.pdf exemple.html exemple.pdf
Une autre possibilité est la réutilisation de paramètres. Cette ligne de commande permet de recopier le fichier en conf.ori :
touch conf
cp conf{,.ori}
On terminera avec cet exemple un peu plus concret qui permet de créer des homedirs. On remarquera l'utilisation de echo afin de mettre au point la commande finale plus facilement :
echo /home/{utilisateur1,utilisateur2,utilisateur3}/{images,documents}
mkdir -p /home/{utilisateur1,utilisateur2,utilisateur3}/{images,documents}
chmod 700 /home/{utilisateur1,utilisateur2,utilisateur3}/{images,documents}
5 Commentaires pour "Etendre les possibilités de Bash avec l'expansion des accolades"
Flux des commentaires de cet article Ajouter un commentaireSans oublier le touch file{1..100}
Autant l'utiliser à fond : echo /home/utilisateur{1,2,3}/{image,document}s
Non ?
@William : a cool, justement je me demandais si c'était possible de mettre des plages en paramètres. En plus cela fonctionne avec des lettres (ex: touch file {a..z}
@smx : je suis pas faignant à ce point ...
@Rouc1 : on sens que mon dernier article sur la réutilisation des paramètres ta marqué. Tu as effectivement raison, c'est plus simple ainsi.
En fait on peut faire plus simple pour le dernier exemple en utilisant un autre raccourci de Bash : le !$ .
L'exemple devient donc :
echo /home/{utilisateur1,utilisateur2,utilisateur3}/{images,documents}
mkdir -p !$
chmod 700 !$
=> ainsi pas besoin de retaper les paths (ou de de les rechercher dans l'historique).
Merci pour l'astuce du cp : je connaissais les accolades mais je ne pensais pas pour les utiliser dans le cas d'un backup de fichier.
Quand l'écrit c'est plus simple mais quand on le tape, si on a le reflexe : Echap + .
on gagne peu
entre fainéants