Métacaractères Linux et leurs significations
Un métacaractère est tout caractère qui a une signification particulière, comme un carat (^), le signe dollar ($) ou un astérisque (*). Linux a un bon nombre de ces métacaractères, et leurs significations diffèrent selon commande Linux ou programme que vous utilisez.
Le point en tant que métacaractère (.)
Le point final (.) indique la position actuelle lors de l'exécution de commandes telles que CD, trouve, ou sh. Dans des applications telles que ok, grep, et sed, c'est un caractère générique qui désigne un numéro spécifique de n'importe quel caractère.
A titre d'exemple, la commande suivante trouve tous fichiers MP3 dans le dossier courant et ses sous-dossiers.
trouve. -type f -nom '*.mp3'
Si vous exécutez cette commande dans le répertoire de travail actuel (pwd), vous verrez les résultats renvoyés, en supposant que vous conserviez les fichiers MP3 dans un dossier de musique dans votre dossier de départ.
Maintenant, regardez cette commande:
ps-ef | grep f..efox
La commande ps répertorie tous les processus en cours d'exécution sur votre ordinateur. La commande grep prend des lignes d'entrée et recherche un modèle.

La commande ps -ef récupère une liste des processus en cours d'exécution. Le tuyau (|) le métacaractère envoie cette liste à la commande grep, qui recherche n'importe quelle ligne de la liste contenant f..efox, où les points font référence à deux de n'importe quel caractère.
Si Firefox est en cours d'exécution, vous obtiendrez une correspondance. De même, si un programme appelé fonefox ou freefox est en cours d'exécution, ceux-ci sont également renvoyés.
Si vous n'avez besoin de rechercher qu'un seul caractère, au lieu d'utiliser le métacaractère point (.), utilisez le? métacaractère. En utilisant le? le métacaractère fait référence à n'importe quel caractère au début ou à la fin du modèle.
L'astérisque comme métacaractère (*)
L'astérisque (*) est un métacaractère universellement connu. Cela signifie zéro ou plus de n'importe quel caractère lors de la recherche d'un motif. Par exemple:
ls *.flac

Les *.flac partie de la commande renvoie une correspondance pour tout nom de fichier qui se termine par .flac. De même, vous pouvez utiliser l'astérisque avec la commande grep dans la dernière section comme suit:
ps-ef | grep f * efox
Cela diffère légèrement car l'astérisque signifie zéro ou plus, donc en plus de trouver firefox, facefox et fonefox, il trouve également flutefox, ferretfox et fefox.

Le carat comme métacaractère (^)
Le carat (^) est utilisé pour désigner le début d'une ligne ou d'une chaîne. Alors, comment est-il utilisé?
La commande ls répertorie les fichiers dans un dossier, comme suit:
ls -a
Si vous souhaitez répertorier les fichiers d'un dossier commençant par une certaine chaîne, par exemple, gnome, le carat peut être utilisé pour spécifier cette chaîne. Par exemple:
ls -a | grep ^gnome
Cela répertorie les fichiers qui commencent par gnome. Si vous voulez des fichiers qui ont gnome n'importe où dans le nom de fichier, utilisez l'astérisque.

Dans l'exemple ci-dessus, la commande ls renvoie une liste de noms de fichiers et transmet cette liste à la commande grep, qui est utilisée pour la correspondance de modèle. Grep sait que le symbole du carat signifie trouver tout ce qui commence par les caractères qui le suivent, et dans ce cas, c'est gnome.
Le symbole du dollar comme métacaractère ($)
Le symbole du dollar ($) a plusieurs significations en tant que métacaractère sous Linux. Lorsqu'il est utilisé pour faire correspondre des motifs, cela signifie le contraire de carat et désigne tout motif qui se termine par une chaîne particulière. Par exemple:
ls | grep png$
Ceci répertorie tous les fichiers qui se terminent par png.
Le symbole du dollar est également utilisé pour accéder aux variables d'environnement dans le shell bash. Par exemple:
#! /bin/bash
chien d'exportation = molly
echo $chien

La ligne chien d'exportation = molly crée une variable d'environnement appelée chien et fixe sa valeur molly. Pour accéder à la variable d'environnement, utilisez le symbole $. Avec le symbole $, le echo $chien déclaration affiche molly. Sans cela, le chien d'écho L'instruction affiche le mot chien.
Échappement des métacaractères (\\)
Parfois, vous ne voulez pas que le métacaractère ait une signification particulière. Par exemple, si un fichier est appelé f.refox et un autre fichier s'appelle firefox.
Regardez maintenant la commande suivante:
ls | grep f.refox
Que pensez-vous est retourné? Les deux f.refox et firefox sont renvoyés car les deux correspondent au modèle.

Pour renvoyer uniquement f.refox, échappez le point pour signifier en fait un point, comme suit:
ls | grep f\\.refox
Parenthèses en tant que métacaractère ([])
Vous pouvez utiliser des parenthèses ([ ]) lors de la recherche de motifs. Les crochets spécifient des lettres spécifiques à faire correspondre n'importe où dans le motif. Par exemple:
ls | grep [abc]
Cela répertorie tous les fichiers qui contiennent les lettres a, b ou c.

Vous pouvez utiliser des crochets au début, à la fin ou au milieu d'un modèle de recherche.
Pour rechercher une plage de lettres, utilisez le trait d'union (-). Par exemple, ls [a-h]* renvoie les fichiers commençant par n'importe quelle lettre de a à h.
Le métacaractère de l'accent grave
Dans les exemples ci-dessus, le métacaractère pipe envoie les résultats d'une commande (comme la commande ls) à une autre commande (comme la commande grep).
Une autre façon de le faire est d'utiliser la citation arrière, également connue sous le nom d'accent grave (`), pour insérer les résultats d'une commande dans une autre commande. Pour ce faire, stockez le résultat d'une commande dans une variable. Par exemple:
commande=`ls -lah`
echo $commande

L'exemple est super artificiel, et vous ne ferez probablement jamais quelque chose comme ça, mais vous pouvez voir comment cela fonctionne. Le caractère backtick exécute une commande et enregistre le résultat. Cela peut être utile dans les scripts, mais c'est moins flexible que d'utiliser le tube pour des commandes simples.
Métacaractères communs et leurs significations
Personnage | Sens |
. | N'importe quel caractère. |
* | Zéro ou plusieurs caractères. |
^ | Faites correspondre n'importe quelle ligne ou chaîne commençant par un motif (par exemple, ^gnome). |
$ | Faites correspondre n'importe quelle ligne ou chaîne qui se termine par un motif (par exemple, gnome$). |
\ | Échappe le caractère suivant pour supprimer sa signification spéciale. |
[] | Faites correspondre l'un d'une liste ou d'une plage (par exemple, ["abc", "def"] ou [1..9]). |
+ | Faites correspondre un ou plusieurs précédents (par exemple, grep a+). |
? | Faites correspondre zéro ou un précédent. |