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.

- 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
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,betc.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.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}.mdcré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.Créer une séquence numérique

Utilisez
{1..5}pour produire une suite de nombres. Testez d’abord avececho {1..5}, puis créez des fichiers avectouch image_{1..5}.jpg.Cette forme est utile quand le motif est régulier. Elle évite d’écrire cinq noms ou plus à la main.
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 obtenir1 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.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}affiche01 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.Combiner plusieurs expansions

Vous pouvez combiner plusieurs groupes dans la même commande. Par exemple,
echo sauvegarde_{local,cloud}_{01..03}.targé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.
Créer plusieurs dossiers imbriqués

Les accolades sont utiles avec
mkdir -ppour poser une arborescence simple. Essayezmkdir -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 quemkdirne les crée.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
echosi la commande a bien le comportement attendu. Cette méthode est pratique pour des tâches courtes et prévisibles.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
findou 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.