Etendre les possibilités de Bash avec l'expansion des accolades


Alien book
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 commentaire
  •  

    Sans oublier le touch file{1..100}

    RépondreRépondre
    william , le 14 mars 2008 à 13:35
  •  

    Autant l'utiliser à fond : echo /home/utilisateur{1,2,3}/{image,document}s

    Non ? :)

    RépondreRépondre
    smx , le 14 mars 2008 à 14:13
  •  

    @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 ... :-D

    @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.

    RépondreRépondre
    pti-seb , le 14 mars 2008 à 18:17
  •  

    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.

    RépondreRépondre
    Rouc1 , le 14 mars 2008 à 18:03
  •  

    Quand l'écrit c'est plus simple mais quand on le tape, si on a le reflexe : Echap + .
    on gagne peu

    entre fainéants ;-)

    RépondreRépondre
    Salemioche , le 23 avril 2008 à 09:10
 

Ajouter un commentaire

actualité android apache apple astuce astuces bash bilboblog blog boot chrome clavier commande commandes conky date debian Desktop développement elementary exploit faille fedora firefox flash gimp gnome google graphique Graphisme hack hacking Hardware humour intel internet iphone jailbreak Jeux Kde kernel libre Linux log logiciels Logiciels Libres lucid lynx maemo mail maquette metasploit microsoft mobile mockup monitoring mozilla multi-touch musique mysql n900 nautilus nokia noyau openoffice open source password photos php Planet publicité red hat redhat rpm réseau screenshot script serveur serveurs shell sql ssh statistiques sysadmin system Sécurité thème tux-planet tv twitter ubuntu unity vidéo vidéos vlc voyage wallpaper windows wordpress yum