Développement des noms de fichiers |
Après le découpage des mots, et si l'option -f n'est pas indiquée, bash recherche dans chaque mot les caractères *, ?, (, et [. Si l'un d'eux apparaît, le mot est considéré comme un motif, et remplacé par une liste, classée par ordre alphabétique, des noms de fichiers correspondant à ce motif. Si aucun nom de fichiers ne correspond, et si l'option shell nullglob n'est pas active, le mot reste inchangé. Si l'option nullglob est active, et si aucune correspondance n'est trouvée, le mot est supprimé. Si l'option shell nocaseglob est activée, la correspondance a lieu sans tenir compte des différences majuscules / minuscules. Quand un motif est utilisé pour créer des chemins d'accès, le caractère ``.'' au début d'un nom, ou immédiatement à la suite d'un slash doit être explicitement mis en correspondance, à moins que l'option shell dotglob ne soit active. Le caractère slash doit toujours être mis en correspondance explicitement. Dans tous les autres cas, le caractère ``.'' n'est pas traité spécifiquement. Voyez la description de la commande shopt dans COMMANDES INTERNES DU SHELL pour une description des options shell nocaseglob, nullglob, et dotglob. |
la variable shell GLOBIGNORE peut servir à restreindre l'ensemble des noms de fichiers correspondant à un motif. Si GLOBIGNORE est remplie, chaque nom de fichier qui correspond aussi à un motif de GLOBIGNORE est supprimé de la liste des correspondances. Les noms de fichiers ``.'' et ``..'' sont toujours ignorés, même quand GLOBIGNORE est remplie. Toutefois, configurer GLOBIGNORE a pour effet d'activer l'option shell dotglob, ainsi tous les autres noms de fichiers commençant par ``.'' correspondront. Pour obtenir l'ancien comportement ignorant les noms commençant par ``.'', placez ``.*'' dans l'un des motifs de GLOBIGNORE. L'option dotglob est désactivée si la variable GLOBIGNORE n'existe pas. |
Motifs génériques |
Tout caractère apparaissant dans un motif, hormis les caractères spéciaux décrits ci-après correspond à lui-même. Le caractère NUL ne peut pas se trouver dans un motif. Les caractères spéciaux doivent être protégés si ils doivent se correspondre littéralement. |
Les caractères spéciaux ont les significations suivantes : |
* |
Correspond à n'importe quelle chaîne, y compris la chaîne vide. |
? |
Correspond à n'importe quel caractère. |
[...] |
Correspond à l'un des caractères entre crochets. Une paire de caractères séparés par un signe "moins" indique un intervalle; qui correspond à n'importe quel caractère situé entre les deux bornes incluses. Si le premier caractère suivant le [ est un ! ou un ^ alors la correspondance se fait sur les caractères non-inclus. Un - peut être mis en correspondance en l'incluant en premier ou dernier caractère de l'ensemble. Un ] peut être mis en correspondance en l'incluant en premier caractère de l'ensemble. |
Entre [ et ], on peut indiquer une classe de caractère en utilisant la syntaxe [:classe:], où classe est l'une des classes suivantes, définies dans le standard POSIX.2 : |
alnum alpha ascii blank cntrl digit graph
lower print punct space upper xdigit Une classe correspond à un caractère quelconque qui s'y trouve. |
Entre [ et ], on peut indiquer une classe d'équivalence en utilisant la syntaxe [=c=], qui correspond à n'importe quel caractère ayant le même ordre (comme indiqué dans la localisation en cours) que le caractère c. |
Entre [ et ], la syntaxe [.symbole.] correspond au symbole de classement symbole. |
Si l'option extglob du shell option est activée par la commande shopt plusieurs opérateurs de correspondance étendue sont reconnus. Dans la description suivante, une liste-motif est une liste d'un ou plusieurs motifs séparés par des |. Les motifs composés sont formés en utilisant un ou plusieurs sous-motifs comme suit : |
?(liste-motif) |
Correspond à zéro ou une occurrence des motifs indiqués |
*(liste-motif) |
Correspond à zéro ou plusieurs occurrences des motifs indiqués |
+(liste-motif) |
Correspond à une ou plusieurs occurrences des motifs indiqués |
@(liste-motif) |
Correspond à une occurrence exactement des motifs indiqués |
!(liste-motif) |
Correspond à tout sauf les motifs indiqués |