Bash offre la possibilité de créer automatiquement une liste de chaînes de caractères à l’aide de la syntaxe générale suivante : [préfixe]{chaîne1,[chaîne2 …]}[suffixe]
Entre la paire d’accolades, les chaînes doivent être séparées par une virgule (pas de caractère espace par exemple). Au moins un caractère virgule doit être présent entre les accolades.
Ce mécanisme de substitution très particulier prend tout son sens lorsqu’il est utilisé avec un préfixe : préfixe{chaîne1,chaîne2 …}
La chaîne résultat est alors constituée de toutes les combinaisons <préfixe><chaîne_i> possibles. Cette syntaxe est utilisée, par exemple, pour créer en une seule commande une suite de répertoires en mentionnant une seule fois le chemin du répertoire destination.
$ mkdir -p Projets/P1_{src,include,bin} $ $ ls -l Projets/ total 12 drwxr-xr-x 2 sanchis sanchis 4096 27 mars 14:06 P1_bin drwxr-xr-x 2 sanchis sanchis 4096 27 mars 14:06 P1_include drwxr-xr-x 2 sanchis sanchis 4096 27 mars 14:06 P1_src $
L’option –p de la commande unix mkdir crée les répertoires Projets, P1_bin, P1_include et P1_src s’ils n’existaient pas.
L’option braceexpand de la commande interne set permet d’activer ou d’inhiber la substitution d’accolades.
$ set -o | grep braceexpand braceexpand on => le mécanisme est déjà activé $ $ echo {coucou,} coucou $ $ set +o braceexpand => désactivation $ $ echo {coucou,} {coucou,} $