Comment utiliser les caractères génériques

Un caractère générique est un caractère qui peut être utilisé comme substitut à n’importe lequel d’une classe de caractères dans une recherche, augmentant ainsi considérablement la flexibilité et l’efficacité des recherches.

Les caractères génériques sont couramment utilisés dans les commandes shell de Linux et d’autres systèmes d’exploitation de type Unix. Un shell est un programme qui fournit une interface utilisateur textuelle et dont la fonction principale est d’exécuter des commandes saisies par les utilisateurs et d’afficher leurs résultats.

Les caractères génériques sont également utilisés dans les expressions régulières et les langages de programmation. Les expressions régulières sont un système de correspondance de motifs qui utilise des chaînes (c’est-à-dire des séquences de caractères) construites selon des règles de syntaxe prédéfinies pour trouver les chaînes souhaitées dans le texte.

Le terme wildcard ou wild card a été utilisé à l’origine dans les jeux de cartes pour décrire une carte à laquelle on peut attribuer n’importe quelle valeur que son détenteur désire. Cependant, son utilisation s’est répandue de sorte qu’il est maintenant utilisé pour décrire un facteur inconnu ou imprévisible dans une variété de domaines.

Joker étoile

Trois types de caractères génériques sont utilisés avec les commandes Linux. Le plus fréquemment utilisé et généralement le plus utile est le caractère générique étoile, qui est le même qu’un astérisque (*). Le caractère générique étoile a la signification la plus large de tous les caractères génériques, car il peut représenter zéro caractère, tous les caractères simples ou n’importe quelle chaîne.

Par exemple, la commande file fournit des informations sur tout objet du système de fichiers (fichier, répertoire ou lien) qui lui est fourni en argument (entrée). Comme le caractère générique étoile représente chaque chaîne, il peut être utilisé comme argument pour que file renvoie des informations sur chaque objet du répertoire spécifié. Ainsi, ce qui suit afficherait des informations sur chaque objet du répertoire courant (c’est-à-dire le répertoire dans lequel l’utilisateur travaille actuellement):

file *

S’il n’y a pas de correspondance, un message d’erreur est renvoyé, tel que *: can’t stat `*’ (Aucun fichier ou répertoire de ce type).. Dans le cas de cet exemple, la seule façon qu’il n’y ait pas de correspondances est si le répertoire était vide.

Les caractères génériques peuvent être combinés avec d’autres caractères pour représenter des parties de chaînes. Par exemple, pour représenter tout objet du système de fichiers qui a un .extension de nom de fichier jpg, *.jpg serait utilisé. De même, a * représenterait tous les objets commençant par une minuscule (c’est-à-dire une petite) lettre a.

Comme autre exemple, ce qui suit indiquerait à la commande ls (qui est utilisée pour lister les fichiers) de fournir les noms de tous les fichiers du répertoire courant qui ont un.html ou a.extension txt:

ls *.html *.txt

De même, ce qui suit indiquerait à la commande rm (qui est utilisée pour supprimer des fichiers et des répertoires) de supprimer tous les fichiers du répertoire actuel qui ont la chaîne xxx dans leur nom:

rm *xxx*

Caractère générique du point d’interrogation

Le point d’interrogation (?) est utilisé comme caractère générique dans les commandes shell pour représenter exactement un caractère, qui peut être n’importe quel caractère. Ainsi, deux points d’interrogation successifs représenteraient deux caractères consécutifs quelconques, et trois points d’interrogation successifs représenteraient toute chaîne composée de trois caractères.

Ainsi, par exemple, ce qui suit renverrait des données sur tous les objets du répertoire courant dont les noms, y compris les extensions, ont exactement trois caractères:

file ???

Et ce qui suit fournirait des données sur tous les objets dont les noms ont une, deux ou trois caractères:

file ? ?? ???

Comme c’est le cas avec le caractère générique étoile, le caractère générique point d’interrogation peut être utilisé en combinaison avec d’autres caractères. Par exemple, ce qui suit fournirait des informations sur tous les objets du répertoire courant commençant par la lettre a et mesurant cinq caractères:

file a????

Le caractère générique du point d’interrogation peut également être utilisé en combinaison avec d’autres caractères génériques lorsqu’il est séparé par un autre caractère. Par exemple, ce qui suit renverrait une liste de tous les fichiers du répertoire actuel qui ont une extension de nom de fichier de trois caractères:

ls *.???

Caractère générique entre crochets

Le troisième type de caractère générique dans les commandes shell est une paire de crochets, qui peuvent représenter n’importe lequel des caractères entre crochets. Ainsi, par exemple, ce qui suit fournirait des informations sur tous les objets du répertoire courant qui contiennent un x, un y et/ ou un z:

file **

Et ce qui suit répertorierait tous les fichiers dont l’extension commence par x, y ou z:

ls *.*

Les mêmes résultats peuvent être obtenus en utilisant simplement les caractères génériques étoile et point d’interrogation. Cependant, il est clairement plus efficace d’utiliser le caractère générique de parenthèse.

Lorsqu’un trait d’union est utilisé entre deux caractères entre crochets, il indique une plage comprenant ces deux caractères. Par exemple, ce qui suit fournirait des informations sur tous les objets du répertoire courant qui commencent par une lettre de a à f:

file *

Et ce qui suit fournirait des informations sur chaque objet du répertoire actuel dont le nom comprend au moins un chiffre:

file **

L’utilisation des crochets pour indiquer une plage peut être combinée avec son utilisation pour indiquer une liste. Ainsi, par exemple, ce qui suit fournirait des informations sur tous les objets du système de fichiers dont les noms commencent par une lettre de a à c ou commencent par s ou t:

file *

De même, plusieurs ensembles de plages peuvent être spécifiés. Ainsi, par exemple, ce qui suit renverrait des informations sur tous les objets dont les noms commencent par les trois premières ou les trois dernières lettres minuscules de l’alphabet:

file *

Parfois, il peut être utile d’avoir une succession de caractères génériques entre crochets. Par exemple, ce qui suit afficherait tous les noms de fichiers dans le répertoire courant composés de jones suivis d’un nombre à trois chiffres:

ls jones



+