Selon Wikipedia, un métacaractère est un caractère ayant une signification particulière, tel qu'un carat (^), un signe dollar ($) ou un astérisque (*).
En termes de Linux, il existe un bon nombre de ces méta-caractères et leur signification diffère selon la commande ou le programme que vous exécutez.
L’arrêt complet en tant que métacaractère (.)
L’arrêt complet humble sert à indiquer la position actuelle lorsqu’il exécute des commandes telles que cd, find ou sh, mais dans les applications telles que awk, grep et sed, il sert à désigner n’importe quel caractère.
Par exemple, la commande suivante trouvera tous les fichiers mp3 dans le dossier actuel et ci-dessous.
trouver . -nom * .mp3
Si vous exécutez cette commande dans votre répertoire de travail actuel (pwd), vous obtiendrez probablement des résultats, en supposant que vous conserviez vos fichiers mp3 dans un dossier de musique situé dans votre dossier de base.
Maintenant, regardez cette commande:
ps -ef | grep f..efox
La commande ps répertorie tous les processus en cours sur votre ordinateur. La commande grep prend des lignes d’entrée et recherche un motif.
Par conséquent, la commande ps -ef obtient une liste des processus en cours d'exécution et la transmet à grep, qui recherche toute ligne de la liste contenant f..efox où. peut signifier n'importe quel personnage.
Si vous avez Firefox en cours d'exécution, vous obtiendrez une correspondance. De même, si vous avez un programme appelé fonefox ou freefox en cours d'exécution, ils seront également renvoyés.
L'astérisque en tant que métacaractère (*)
L'astérisque est un métacaractère plus connu dans le monde et est utilisé pour signifier 0 ou plus lors de la recherche d'un motif.
Par exemple:
trouver . -nom * .mp3
Le * .mp3 renvoie une correspondance pour tout nom de fichier se terminant par .mp3. De même, j'aurais pu utiliser l'astérisque avec la commande grep comme le montre l'illustration suivante:
ps -ef | grep F * efox
Il est à noter que cela diffère légèrement car l'astérisque signifie zéro ou plus, de même que trouver firefox, facefox et fonefox, il peut également trouver flutefox, ferretfox et même simplement fefox.
Le carat comme métacaractère (^)
Le carat (^) sert à désigner le début d'une ligne ou d'une chaîne. Alors, comment est-il utilisé?
La commande ls permet de répertorier tous les fichiers d’un dossier comme suit:
ls
Si vous voulez connaître tous les fichiers d'un dossier commençant par une certaine chaîne telle que "gnome", vous pouvez utiliser le carat pour spécifier cette chaîne.
Par exemple:
ls | grep ^ gnome
Notez que cela ne répertorie que les fichiers qui commencent par gnome. Si vous voulez que des fichiers ayant un gnome dans le nom de fichier soient stockés n'importe où, vous devez à nouveau revenir à l'astérisque.
Dans l'exemple ci-dessus, le ls retourne une liste de noms de fichiers et passe cette liste à grep qui est utilisé pour la recherche de modèle. grep sait que le symbole carat signifie tout ce qui commence par les caractères qui le suivent et dans ce cas, il s’agit d’un gnome.
Le symbole du dollar en tant que métacaractère ($)
Le symbole dollar peut avoir plusieurs significations en tant que métacaractère dans Linux.
Lorsqu'il est utilisé pour faire correspondre des motifs, cela signifie l'opposé de carat et désigne tout motif se terminant par une chaîne particulière.
Par exemple:
ls | grep png $
Ceci répertorie tous les fichiers qui se terminent par png.
Le symbole dollar est également utilisé pour accéder aux variables d'environnement dans le shell bash.
Par exemple:
chien d'exportation = mollyecho $ chien
La ligne export dog = molly crée une variable d'environnement appelée dog et définit sa valeur sur molly. Pour accéder à la variable d'environnement, le symbole $ est utilisé. Avec le symbole $, la déclaration echo $ dog affiche Molly mais sans lui, la déclaration echo chien affiche simplement le mot chien.
Métacaractères s'échappant
Parfois, vous ne voulez pas que le métacaractère ait une signification particulière. Que faire si vous avez un fichier appelé f.refox et un fichier appelé firefox.
Maintenant, regardez la commande suivante:
ls | grep f.refox
Que pensez-vous est retourné? F.refox et firefox sont renvoyés car ils correspondent tous les deux au modèle.
Pour ne renvoyer que la valeur f.refox, vous devez échapper au point final pour qu'il en soit réellement ainsi:
ls | grep f . refox
Métacaractères communs et leurs significations
Personnage | Sens |
. | N'importe quel personnage |
* | Zéro ou plusieurs caractères |
^ | Correspond à n'importe quelle ligne ou chaîne qui commence par un motif (c'est-à-dire ^ gnome) |
$ | Correspond à n'importe quelle ligne ou chaîne se terminant par un motif (c'est-à-dire gnome $) |
Échappe au caractère suivant pour supprimer sa signification particulière | |
Faites correspondre une liste ou une plage (c'est-à-dire "abc", "def" ou 1..9 | |
+ | Correspondre à un ou plusieurs précédents (c.-à-d. Grep a +) |
? | Match zéro ou un précédent |