Débutant

Maîtriser les expansions d’accolades Bash pour générer fichiers, dossiers et commandes répétitives

Apprenez à utiliser les expansions d’accolades Bash pour créer des fichiers, dossiers et commandes répétitives sans écrire de boucle.

Maîtriser les expansions d’accolades Bash pour générer fichiers, dossiers et commandes répétitives
Difficulté
Facile

L’expansion d’accolades permet de générer plusieurs arguments en une seule commande, sans écrire de boucle. En Bash, des formes comme {a,b} et {1..100} sont développées avant l’exécution de la commande.

Ce tutoriel montre comment s’en servir pour créer des fichiers, des dossiers et répéter des commandes simplement. Il précise aussi les cas où cette syntaxe ne remplace pas une boucle.

Prérequis

Il faut disposer d’un shell Bash ou d’un shell compatible avec cette fonctionnalité. Vous devez aussi savoir lancer des commandes simples comme mkdir, touch, echo et cp.

Matériel nécessaire

  • Un terminal avec Bash
  • Un dossier de test pour éviter de modifier des fichiers utiles

Étapes

  1. Tester une expansion simple

    Commencez par afficher le résultat sans rien modifier sur le disque. Lancez echo {a,b,c} pour vérifier que Bash développe trois arguments : a, b et c.

    Faites ensuite un test avec du texte autour des accolades : echo fichier_{a,b,c}.txt. Vous obtenez trois noms complets en une seule fois.

  2. Générer une liste de noms explicites

    Utilisez une liste entre accolades quand les valeurs ne suivent pas une suite régulière. Par exemple, touch rapport_{brouillon,revu,final}.md crée trois fichiers avec un préfixe et une extension communs.

    La même idée fonctionne pour des dossiers : mkdir projet_{docs,src,tests}. Vous évitez de répéter trois fois la même structure de commande.

  3. Créer une séquence numérique

    Une personne tape au clavier devant un terminal affiché à l’écran, avec une séquence numérique générée sur une seule ligne dans un espace de travail épuré.

    Utilisez {1..5} pour produire une suite de nombres. Testez d’abord avec echo {1..5}, puis créez des fichiers avec touch image_{1..5}.jpg.

    Cette forme est utile quand le motif est régulier. Elle évite d’écrire cinq noms ou plus à la main.

  4. Ajouter un pas à la séquence

    Une séquence peut inclure un incrément avec trois points de séparation. Essayez echo {1..10..2} pour obtenir 1 3 5 7 9.

    Vous pouvez ensuite l’appliquer à une commande réelle, par exemple mkdir lot_{10..50..10}. Cela crée uniquement les dossiers correspondant au pas choisi.

  5. Conserver des zéros en tête

    Si vous avez besoin d’une numérotation fixe, utilisez une séquence avec des zéros. La commande echo {01..05} affiche 01 02 03 04 05.

    Cela sert pour des fichiers triés proprement, par exemple touch page_{01..12}.html. L’ordre alphabétique reste alors cohérent avec l’ordre numérique.

  6. Combiner plusieurs expansions

    Un écran montre un terminal où plusieurs expansions combinées produisent plusieurs noms groupés en une seule opération, avec un clavier partiellement visible.

    Vous pouvez combiner plusieurs groupes dans la même commande. Par exemple, echo sauvegarde_{local,cloud}_{01..03}.tar génère toutes les combinaisons entre les deux listes.

    Cette technique permet de créer une petite matrice de noms sans boucle. Elle reste lisible tant que le nombre de combinaisons reste raisonnable.

  7. Créer plusieurs dossiers imbriqués

    Un terminal affiché sur un écran présente le résultat de la création de plusieurs dossiers imbriqués, avec un clavier au premier plan.

    Les accolades sont utiles avec mkdir -p pour poser une arborescence simple. Essayez mkdir -p projet/{docs,src,tests} pour créer trois sous-dossiers d’un coup.

    Vous pouvez aller un peu plus loin avec mkdir -p site/{css,js,img}/archive. Bash développe chaque chemin avant que mkdir ne les crée.

  8. Répéter une commande sans boucle

    L’expansion d’accolades ne sert pas qu’à créer des fichiers. Vous pouvez répéter des arguments, par exemple echo cp rapport.txt archive_{1..3}/ pour prévisualiser plusieurs destinations.

    Après vérification, retirez le premier echo si la commande a bien le comportement attendu. Cette méthode est pratique pour des tâches courtes et prévisibles.

  9. Vérifier quand les accolades ne suffisent pas

    L’expansion d’accolades est purement textuelle. Elle ne teste pas une condition, ne lit pas un fichier et ne remplace pas les cas où chaque itération dépend d’un calcul ou d’une commande.

    Par exemple, si vous devez agir sur des noms provenant de find ou d’une variable construite dynamiquement, une boucle ou une autre technique sera souvent plus adaptée. Les accolades brillent surtout quand la liste est connue à l’avance.

Erreurs fréquentes & dépannage

Oublier de tester avec echo. C’est la cause la plus fréquente d’erreur quand une commande modifie beaucoup de fichiers d’un coup.

Mettre des espaces dans la liste. Écrivez {a,b,c}, pas {a, b, c}.

Confondre expansion textuelle et logique de boucle. Les accolades génèrent des mots, mais ne parcourent pas des résultats calculés au moment de l’exécution.

Créer trop d’arguments. Une combinaison comme {1..1000} reste simple, mais plusieurs groupes combinés peuvent produire une commande difficile à relire ou trop volumineuse.

Astuces & pour aller plus loin

Prévisualisez toujours. Placez echo devant la commande pour voir exactement ce que Bash va développer.

Commencez petit. Testez avec {1..3} avant de passer à {1..100}.

Gardez les noms réguliers. Les accolades sont les plus utiles quand le préfixe, le suffixe ou la numérotation suivent un motif stable.

Questions fréquentes

Quelle différence avec une boucle for en Bash ?

L’expansion d’accolades génère une liste fixe de mots avant l’exécution de la commande. Une boucle for permet d’exécuter un bloc de commandes et de gérer une logique plus riche à chaque itération.

Puis-je utiliser des variables dans une expansion d’accolades ?

Pas comme dans une séquence calculée dynamiquement. Si vous avez besoin de bornes ou de valeurs provenant de variables, il faut souvent passer par une boucle ou une autre construction Bash.

Est-ce compatible avec tous les shells ?

Non, il faut viser Bash ou un shell compatible. Si votre script est lancé avec sh, vérifiez le shell réellement utilisé avant de compter sur cette syntaxe.

Conclusion

Pour gagner du temps sans écrire de boucle, retenez ce réflexe : testez d’abord avec echo, puis appliquez les formes {a,b}, {1..N} et leurs combinaisons à des commandes simples comme touch ou mkdir. Dès que la liste n’est plus connue à l’avance ou qu’une logique d’itération apparaît, basculez vers une boucle Bash.

Commentaires · Aucun commentaire pour l'instant

Soyez le premier à réagir.

Laisser un commentaire