Ligne de commande 101 #1 : ici
Les métacaractères sont des caractères qui ont une utilisation spéciale autre que celle littéraire.
Nous avons deux types de métacaractères :
De substitution :
- * – (Étoile) replace n’importe quel caractère ou groupe de caractères.
- ? – (Point d’interrogation) replace un caractère.
De protection :
- \ – empêche l’interprétation spéciale d’un métacaractère.
- ` – les guillemets inversés force une interprétation de la chaîne de caractères incluse entre deux de ces caractères comme une commande.
- ‘ – tous les métacaractères inclus entre deux de ces caractères sont interprétés comme du texte.
Quelques exemples d’utilisations de substitution :
Nous utiliserons un répertoire contenant les fichiers suivant dans les exemples :
Sandrine-3:test sandrine$ ls -l total 0 -rw-r--r-- 1 sandrine staff 0 6 jul 20:49 file_AA -rw-r--r-- 1 sandrine staff 0 6 jul 21:13 file_Ab -rw-r--r-- 1 sandrine staff 0 6 jul 21:13 file_Ac -rw-r--r-- 1 sandrine staff 0 6 jul 20:49 file_bb -rw-r--r-- 1 sandrine staff 0 6 jul 20:49 file_cc -rw-r--r-- 1 sandrine staff 0 6 jul 20:49 files_1 -rw-r--r-- 1 sandrine staff 0 6 jul 21:15 files_2 -rw-r--r-- 1 sandrine staff 0 6 jul 21:15 files_3 Sandrine-3:test sandrine$
Dans cette exemple la commande « ls » affiche tous les noms fichiers avec le nom commençant par « files » avec tous les terminaisons possible :
Sandrine-3:test sandrine$ ls -l files* -rw-r--r-- 1 sandrine staff 0 6 jul 20:49 files_1 -rw-r--r-- 1 sandrine staff 0 6 jul 21:15 files_2 -rw-r--r-- 1 sandrine staff 0 6 jul 21:15 files_3 Sandrine-3:test sandrine$
Vous pouvez aussi faire l’inverse et rechercher tous les noms fichiers ce terminant par « _1 » comme ceci :
Sandrine-3:test sandrine$ ls -l *_1 -rw-r--r-- 1 sandrine staff 0 6 jul 20:49 files_1 Sandrine-3:test sandrine$
Tandis qu’avec le « ? » vous pouvez recherche toutes les occurrences de nom de fichiers commençant par « file_ » avec un caractère inconnu ce terminant par « b » comme ceci :
Sandrine-3:test sandrine$ ls -l file_?b -rw-r--r-- 1 sandrine staff 0 6 jul 21:13 file_Ab -rw-r--r-- 1 sandrine staff 0 6 jul 20:49 file_bb Sandrine-3:test sandrine$
Quelques exemples d’utilisations de caractère de protection :
Si vous désirez utiliser la commande « echo » pour afficher un « * » vous obtiendrai ceci :
Sandrine-3:test sandrine$ echo * file_AA file_Ab file_Ac file_bb file_cc files_1 files_2 files_3 Sandrine-3:test sandrine$
Pour éviter l’interprétation de « * » comme métacaractère précéder le de « \ » :
Sandrine-3:test sandrine$ echo \* * Sandrine-3:test sandrine$
Pour forcer une interprétation d’une chaîne de caractères placer les entre guillemets inversés :
Sandrine-3:test sandrine$ echo ls ls Sandrine-3:test sandrine$ echo `ls` file_AA file_Ab file_Ac file_bb file_cc files_1 files_2 files_3 Sandrine-3:test sandrine$
Pour interpréter comme du texte placer une chaîne de métacaractères entre guillemets :
Sandrine-3:test sandrine$ echo ****** file_AA file_Ab file_Ac file_bb file_cc files_1 files_2 files_3 Sandrine-3:test sandrine$ echo '******' ****** Sandrine-3:test sandrine$