Ligne de commande Linux 101 #2 Bash Métacaractère

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$ 

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *