Outils pour utilisateurs

Outils du site


cours:informatique:fun_mooc:maitrise_du_bash_univ-reunion:220_abreviations_noms_fichiers

Shell: Expansion des noms de fichiers

Bash permet à l'utilisateur de définir des expressions ou des motifs à l'aide de caractères spéciaux pour désigner des ensembles de fichiers ou des répertoires. Avant d'exécuter la commande, le shell passe par une phase d'analyse syntaxique au cours de laquelle il développe les motifs en les remplaçant par les noms de fichiers ou dossiers correspondant. Cette phase est appelée globbing.

Caractères spéciaux

Pour définir un motif, certains caractères spéciaux (métacaractères) sont utilisés:

* Désigne un ou plusieurs caractères quelconques
? Désigne exactement un caractère quelconque
[abgt] Un des caractères de l'ensemble
[a-m]
[!…] négation aucun des caractères de l'ensemble ou l'intervalle.
La portée du globbing se limite à un niveau de l'arborescence du système de fichier.

Classes de caractères

Pour désigner un caractère parmi une classe (un type proche) de caractères, la norme POSIX a définit des classes de caractères qui peuvent être utilisées en Bash.

[:alnum:] Correspond aux caractères alphabétiques et numériques. Équivalent à A-Za-z0-9.
[:alpha:] Correspond aux lettres. Équivalent à A-Za-z.
[:blank:] Correspond à une espace ou à une tabulation.
[:cntrl:] Correspond aux caractères de contrôle.
[:digit:] Correspond aux chiffres. Équivalent à 0-9.
[:graph:] Correspond aux caractères de code ASCII compris entre 33 et 126.Ce sont les caractères graphiques affichables hormis l’espace.
[:lower:] Correspond aux lettres minuscules. Équivalent à a-z.
[:print:] Correspond aux caractères de code ASCII compris entre 32 et 126. C’est la classe [:graph:] avec l’espace en plus.
[:space:] Correspond aux blancs (espace, tabulation, passage à la ligne, retour chariot, saut de page, tabulation verticale).
[:upper:] Correspond aux lettres majuscules. Équivalent à A-Z.
[:xdigit:] Correspond aux chiffres hexadécimaux. Équivalent à 0-9A-Fa-f.

Par exemple si l'on souhaite lister l'ensemble des fichiers du répertoire courant dont le nom commence par une majuscule:

ls -l [[:upper:]]*

Correspond aux chiffres hexadécimaux. Équivalent à 0-9A-Fa-f.

L'option extglob

Il est possible de concevoir des expressions et motifs plus élaborées via l'activation de l'option extglob1). Cette option de comportement du shell est contrôlée avec la commande shopt. En l’occurrence, pour bénéficier de la substitution étendue, il faut entrer la commande :

shopt -s extglob

Cette option offre des motifs étendus composés éventuellement d’une liste de sous-motifs, c’est-à-dire de motifs séparés par des caractères ’|’. Ce caractère donne la signification d’un ’ou’ logique. Par exemple, la liste ab|cd indique le motif ab ou cd.

La substitution étendue du nom de fichier, accessible en positionnant l’option extglob de Bash, accroît les possibilités de traitement par lot des fichiers à l’aide de motifs plus sophistiqués mais peut-être plus délicats à mettre en œuvre et moins lisibles.

Les motifs étendus sont formés avec un ou plusieurs des éléments suivants :

1)
EXTended GLOBbing
cours/informatique/fun_mooc/maitrise_du_bash_univ-reunion/220_abreviations_noms_fichiers.txt · Dernière modification : 2021/03/19 22:34 de 93.28.24.141