Crosse

Crosse
Lorsque nous devons rechercher quoi que ce soit en utilisant des commandes de shell, nous devons définir un modèle de recherche. Les caractères génériques sont utilisés pour définir le modèle de recherche ou de correspondance de texte sur les données de chaîne dans le shell bash. Une autre utilisation courante des caractères génériques est de créer des expressions régulières. Comment vous pouvez utiliser différents types de caractères génériques pour la recherche de fichiers est affiché dans ce tutoriel.

Personnages génériques

Les trois principaux personnages de joker sont,

  • Étoile ou astérisque (*)
  • Point d'interrogation (?)
  • Crochets ([])

Asterisk (*) est utilisé pour rechercher un ou plusieurs caractères pour zéro ou plus de fois. Point d'interrogation (?) est utilisé pour rechercher un nombre fixe de caractères où chaque point d'interrogation (?) indique chaque caractère. Les crochets sont utilisés pour correspondre aux caractères d'une gamme définie ou d'un groupe de caractères. Les utilisations de ces caractères sont affichées dans la prochaine partie de ce tutoriel.

Utilisation d'astérisque (*)

Asterrisk (*) peut être utilisé de différentes manières avec les commandes shell pour la recherche de fichiers. Une utilisation différente de l'astérisque (*) est indiquée dans les exemples suivants.

Exemple - 1: Recherche de fichiers spécifiques avec le nom de fichier et '*'

'LS' La commande est utilisée pour découvrir la liste des fichiers et dossiers du répertoire actuel. 'ls a *' La commande recherche et imprimera tous les noms de fichiers du répertoire actuel qui commence par le personnage, 'un'.

$ ls
$ ls a *

Sortir:

Selon la sortie suivante, 12 fichiers existent dans le répertoire actuel qui commence par le caractère «A».

Exemple - 2: Recherche de fichiers avec une extension particulière et '*'

Vous pouvez rechercher n'importe quel fichier en utilisant l'astérisque (*) et l'extension de fichier. Si vous souhaitez rechercher tous les fichiers avec le '.SMS' Extension du répertoire actuel, puis exécutez la commande suivante à partir du terminal. Ici, le nom de fichier peut être n'importe quel (s) personnage (s) et n'importe quel nombre de caractères.

$ ls *.SMS

Vous pouvez également rechercher des fichiers de différentes extensions en utilisant l'astérisque (*). La commande suivante recherchera tous les fichiers avec extension '.sh ' ou '.SMS'

$ ls *.sh *.SMS

Sortir:

La sortie affiche la liste de tous les fichiers existants du répertoire actuel avec l'extension '.sh 'et'.SMS.

Exemple - 3: Suppression du fichier par match partiel et '*'

Vous pouvez utiliser l'astérisque (*) pour faire correspondre tout nom de fichier partiellement. La commande suivante supprimera le fichier qui contient le 'test' mot dans n'importe quelle partie du nom de fichier.

$ ls
$ rm * test *
$ ls

Sortir:

La sortie suivante montre que deux fichiers existent dans le répertoire actuel qui contient le mot «test» et ces fichiers ont été supprimés après l'exécution de la commande «RM».

Utilisation de points d'interrogation (?)

Lorsque vous connaissez les nombres exacts de personnages que vous souhaitez rechercher, alors le point d'interrogation (?) Le générique peut être utilisé. Les exemples suivants montrent l'utilisation différente des points d'interrogation (?).

Exemple - 1: Recherche de fichier avec FileName et '?'

Supposons que l'extension du fichier, le nombre total de caractères d'un fichier et certains caractères du fichier sont connus, alors vous pouvez utiliser ce joker pour rechercher le fichier. La première commande recherchera les fichiers qui ont l'extension '.SMS'. La deuxième commande recherchera les fichiers qui mesurent quatre caractères, le dernier caractère est «t» et l'extension du fichier est '.SMS'.

$ ls *.SMS
$ ls ???t.SMS

Sortir:

La sortie montre que 7 fichiers existent dans le répertoire actuel avec le '.Extension txt »et un fichier texte existe qui mesure 4 caractères et le dernier caractère est« t ».

Exemple -2: Fichier de recherche avec extension et '?'

Supposons que vous connaissiez le nom de fichier et le nombre total de caractères de l'extension de fichier, vous pouvez utiliser le point d'interrogation (?) wildcard pour rechercher le fichier. La commande suivante recherchera le fichier avec nom de fichier 'Bonjour' Et l'extension mesure trois caractères.

$ ls
$ ls bonjour.???

Sortir:

Selon la sortie, deux fichiers existent dans le répertoire actuel qui a le nom, «bonjour» et l'extension est de trois caractères.

Utilisation de crochets ([])

Différentes gammes de caractères ou groupe de caractères peuvent être utilisées entre crochets ([]) pour rechercher des fichiers en fonction de la plage.

Exemple -1: Recherchez les fichiers de toute extension avec deux valeurs de gammes

La commande suivante recherchera n'importe quel fichier dont le nom contient n'importe quel caractère dans 'a-p'Et tout chiffre à l'intérieur'0-5'Et l'extension de fichier peut être n'importe quel caractère.

$ ls
$ ls [a-p0-5] *.*

Sortir:

La sortie suivante montre la liste de tous les fichiers qui correspondent au modèle utilisé dans la commande.

Exemple-2: le fichier de recherche commence par un caractère particulier et est suivi d'un autre caractère

Dans cet exemple, la deuxième commande recherchera les noms de fichiers en commençant par l'un de ces caractères [afgh] suivi du caractère 'O' avec n'importe quelle extension.

$ ls
$ ls [afgh] * o *

Sortir:

La sortie suivante montre la liste de tous les fichiers qui correspondent au modèle utilisé dans la commande.

Exemple-3: Recherche de noms de fichiers avec la valeur du préfixe

La commande suivante correspondra aux fichiers dont le nom commence par 'fn' et est suivi d'un nombre dans les 0 à 5.

$ ls fn [0-5]

La commande suivante correspondra aux fichiers qui contiennent le nom, «bonjour» et l'extension contient n'importe quel caractère de t à z.

$ ls bonjour.[T-Z] *

Sortir:

La sortie suivante montre la liste de tous les fichiers qui correspondent au modèle utilisé dans les commandes.

La classe de caractères peut être utilisée dans les troisième supports pour correspondre au nom de fichier ou à la chaîne particulière du script. Différentes classes qui peuvent être utilisées dans le modèle ont décrit ci-dessous.

Nom du cours But
[:alpha:] Il est utilisé pour correspondre à toute lettre majuscule et minuscule et équivalent à [A-ZA-Z].
[:chiffre:] Il est utilisé pour correspondre à tous les chiffres et équivaut à [0-9].
[: Alnum:] Il est utilisé pour correspondre à n'importe quel alphabet et chiffre. Il équivaut à [a-za-z].
[:supérieur:] Il est utilisé pour correspondre à ce dernier et équivalent à [A-Z]
[:inférieur:] Il est utilisé pour correspondre à ce dernier et équivalent à [A-Z]
[:blanc:] Il est utilisé pour correspondre à l'espace et à l'onglet.
[:imprimer:] Il est utilisé pour correspondre aux caractères imprimables.
[: cntrl:] Il est utilisé pour correspondre aux caractères non imprimables.
[:espace:] Il est utilisé pour correspondre à l'espace.
[: xdigit:] Il est utilisé pour correspondre aux chiffres hexadécimaux.
[: ASCII:] Il est utilisé pour correspondre aux caractères ASCII.
[:mot:] Il est utilisé aux caractères alphanumériques, y compris le soulignement (_).

Les utilisations de quatre classes principalement utilisées ont expliqué dans les quatre exemples suivants.

Exemple-1: utilisation de [: alpha:] dans le script bash

Le script suivant vérifie que l'entrée prise de l'utilisateur contient uniquement des caractères alphabétiques.

#!/ bac / bash
echo -n "quel est votre nom? "
# Attribuer une valeur d'entrée à la variable
Nom de lecture
# Vérifier que la valeur d'entrée contient l'alphabet uniquement
si [["$ name" = ~ ^ [[: alpha:]]]]; alors
Echo "Votre nom est $ nom."
autre
Echo "Entrez uniquement le caractère alphabétique."
Fi

Sortir:
La sortie suivante montre le message pour une entrée non valide et valide.

Exemple-2: utilisation de [: chiffre:] dans le script bash

Le script suivant vérifiera que les entrées prises par l'utilisateur ne contient que des caractères numériques.

#!/ bac / bash
echo -n "Entrez votre identifiant:"
# Attribuer une valeur d'entrée à la variable
ID de lecture
# Définissez la valeur d'ID
Id = "id- $ id"
# Définissez le modèle en utilisant [[: Digit:]] classe
regex = "id - [[: chiffre:]] +"
# Vérifier que la valeur d'entrée contient le nombre uniquement
si [[$ id = ~ $ regex]]; alors
Echo "$ id est valide."
autre
Echo "$ id n'est pas valide."
Fi

Sortir:

La sortie suivante montre le message pour une entrée non valide et valide.

Exemple-3: utilisation de [: alnum:] dans le script bash

Le script suivant vérifiera que les entrées prises par l'utilisateur ne contient des caractères alphanumériques que.

#!/ bac / bash
echo -n "Entrez votre adresse:"
# Attribuer une valeur d'entrée à la variable
lire addr
# Vérifier que la valeur d'entrée contient l'alphabet et le numéro uniquement
si [[$ addr = ~ ^ [[: alnum:]]]]; alors
Echo "L'adresse est valide."
autre
Echo "L'adresse n'est pas valide."
Fi

Sortir:

La sortie suivante montre le message pour une entrée non valide et valide.

Exemple-4: utilisation de [: Upper:] dans le script bash

Le script suivant vérifiera que les entrées prises par l'utilisateur ne contiennent que des majuscules uniquement.

#!/ bac / bash
echo -n "Entrez votre code dans la lettre majuscule:"
# Attribuer une valeur d'entrée à la variable
lire le code
# Vérifier que la valeur d'entrée contient tous les derniers
Si [[$ code = ~ ^ [[: Upper:]]]]; alors
Echo "Le code est correct."
autre
Echo "Le code peut contenir uniquement."
Fi

Sortir:

La sortie suivante montre le message pour une entrée non valide et valide.

Conclusion

Les utilisations de base des caractères génériques pour rechercher des fichiers dans le terminal et la validation des données à l'aide de Bash Script ont été affichés dans ce tutoriel. J'espère que les exemples présentés ici aideront les utilisateurs de Linux à rédiger correctement les modèles d'expression réguliers pour correspondre à tout contenu à des fins différentes.