Tutoriel Bash Globbing

Bash Globbing Tutorial



Bash ne prend pas en charge les expressions régulières natives comme certains autres langages de programmation standard. La fonctionnalité du shell Bash qui est utilisée pour faire correspondre ou développer des types spécifiques de modèles est appelée globbing. Le globbing est principalement utilisé pour faire correspondre des noms de fichiers ou rechercher du contenu dans un fichier. Globbing utilise des caractères génériques pour créer le modèle. Les caractères génériques les plus courants utilisés pour créer des modèles de globalisation sont décrits ci-dessous.

'?' est utilisé pour correspondre à n'importe quel caractère. Vous pouvez utiliser '?' plusieurs fois pour faire correspondre plusieurs caractères.







Exemple 1:



Supposons que vous souhaitiez rechercher les noms de fichiers texte dont les noms comportent 4 caractères et dont l'extension est .SMS . Vous pouvez appliquer un motif de globbing en utilisant ' ? ’ quatre fois pour faire cette tâche.



Découvrez la liste de tous les fichiers et dossiers du répertoire courant.





$ls–l

Exécutez la commande suivante pour rechercher les fichiers dont les noms comportent quatre caractères et sont inconnus.

$ ls -l ????.txt



Exemple-2 :

Supposons que vous souhaitiez rechercher les fichiers de documents dont les noms comportent 8 caractères, les 4 premiers caractères sont f, o, o et t et l'extension est doc . Exécutez la commande suivante avec le modèle globbing pour rechercher les fichiers.

$ls -lpied ????.doc

Exemple-3 :

Supposons que vous sachiez que le nom du fichier est 'meilleur' et l'extension fait 3 caractères, mais je ne connais pas l'extension. Exécutez la commande suivante en utilisant '? ’ pour rechercher tous les fichiers portant le nom ‘test’ ayant une extension de trois caractères.

$ls -lmeilleur.???

Astérisque – (*)

'*' est utilisé pour faire correspondre zéro ou plusieurs caractères. Si vous avez moins d'informations pour rechercher un fichier ou une information, vous pouvez utiliser '*' en motif globuleux.

Exemple 1:

Supposons que vous vouliez rechercher tous les fichiers de 'PL' extension. Exécutez la commande suivante en utilisant '*' pour faire cette tâche.

$ls -l *.PL

Exemple-2 :

Supposons que vous ne connaissiez que le caractère de départ du nom de fichier qui est 'à' . Exécutez la commande suivante en utilisant '*' pour rechercher tous les fichiers du répertoire actuel dont les noms commencent par 'à' .

$ls -là*.*

Exemple-3 :

Vous pouvez appliquer « * » dans le script bash à diverses fins sans rechercher de fichiers. Créez un fichier bash nommé 'check.sh' avec le script suivant. Ici, lorsque l'utilisateur tapera ' y' ou 'Y' ou 'oui' ou 'oui' alors 'confirmé' s'imprimera et quand le type tapera « n » ou « N » ou « non » ou « Non » alors 'Pas confirmé' s'imprimera.

#!/bin/bash
chassèrent « Voulez-vous confirmer ? »
lireréponse
Cas $réponse dans
[Oui]* ) chassèrent 'confirmé.';;
[Non]* ) chassèrent 'Pas confirmé.';;
*) chassèrent 'Réessayer.';;
esac

Exécutez le script.

$frappercheck.sh

Support carré – ([])

'[]' est utilisé pour faire correspondre le caractère de la plage. Certaines des déclarations de plage les plus utilisées sont mentionnées ci-dessous.

Tous les alphabets majuscules sont définis par la plage comme, [:upper:] ou [A-Z] .

Tous les alphabets minuscules sont définis par la plage comme, [:lower:] ou [a-z].

Tous les chiffres numériques sont définis par la plage comme, [:digit:] ou [0-9].

Tous les alphabets majuscules et minuscules sont définis par la plage comme, [:alpha:] ou [a-zA-z].

Tous les alphabets majuscules, minuscules et chiffres sont définis par la plage comme, [:alnum:] ou [a-zA-Z0-9]

Exemple 1:

Exécutez la commande suivante pour rechercher tous les fichiers et dossiers dont le nom contient p ou Quel ou r ou s .

$ls -l [p-s]*

Exemple-2 :

Exécutez la commande suivante pour rechercher tous les fichiers et dossiers dont le nom commence par n'importe quel chiffre de 1 à 5.

$ls -l [1-5]*

Il lui manque – (^)

Vous pouvez utiliser '^' avec crochet pour définir plus précisément le motif de globbing. '^' peut être utilisé à l'intérieur ou à l'extérieur du crochet. « ^ » est utilisé en dehors des crochets pour rechercher le contenu du fichier qui commence par une plage de caractères donnée. '^' est utilisé à l'intérieur des crochets pour afficher tout le contenu du fichier en mettant en surbrillance les lignes commençant par une plage de caractères donnée. Vous pouvez utiliser différents types de modèles de globalisation pour rechercher un contenu particulier à partir d'un fichier. 'saisir' La commande est utilisée pour la recherche de contenu dans bash. Supposons que vous ayez un fichier texte nommé « liste.txt » avec le contenu suivant. Testez les exemples suivants pour ce fichier.

Pomme
4000
Banane
700
Orange
850
Poire
9000
jackdruit

Exemple 1:

Exécutez la commande suivante pour rechercher ces lignes à partir de liste.txt fichier qui commence par P ou Q ou R .

$ grep '^[P-R]' list.txt

Exemple - 2:

Exécutez la commande suivante pour mettre en évidence ces lignes de liste.txt fichier qui commence par A ou B ou C .

$ grep '[^A-C]' list.txt

Signe exclamatif – (!)

Vous pouvez utiliser '!' à l'intérieur du modèle de plage. Cela fonctionne de la même manière que l'utilisation du symbole '^' en dehors du modèle de plage. Quelques exemples d'utilisation '!' signe sont donnés ci-dessous.

Exemple 1:

Exécutez la commande suivante pour afficher ces lignes de liste.txt fichier qui commence par « P » ou Q ou R .

$ grep [!P-R] list.txt

Exemple - 2:

Exécutez la commande suivante pour afficher ces lignes de liste.txt fichier qui commence par n'importe quel chiffre de 4 à 8 .

$ grep [!4-8] list.txt

Signe dollar – ($)

'$' est utilisé pour définir le caractère de fin. Si vous voulez rechercher des informations en fonction du dernier caractère, vous pouvez utiliser '$' en motif globuleux.

Exemple 1:

Exécutez la commande suivante pour rechercher ces lignes à partir de liste.txt fichier qui se termine par 'à' .

$ grep a$ list.txt

Exemple - 2:

Exécutez la commande suivante pour rechercher ces lignes à partir de liste.txt fichier qui se termine par le numéro cinquante .

$ grep 50$ list.txt

Accolade – ({})

'{}' peut être utilisé pour faire correspondre les noms de fichiers avec plus d'un modèle de globalisation. Chaque motif est séparé par ',' entre accolades sans aucun espace. Quelques exemples sont donnés ci-dessous.

Exemple 1:

Exécutez la commande suivante pour rechercher les fichiers dont les noms comportent 5 caractères et dont l'extension est 'ch' ou les deux derniers caractères des fichiers sont 'st' et l'extension est 'SMS' .

$ ls -l {?????.sh,*st.txt}

Exemple - 2:

Exécutez la commande suivante pour supprimer tous les fichiers dont les extensions sont « doc » ou « docx » .

$rm {*.doc,*.docx}

Tuyau– ( | )

Le signe « | » est également utilisé pour appliquer plus d'une condition sur le motif de globbing. Chaque motif est séparé par le symbole « | » dans la commande.

Exemple 1:

Exécutez la commande suivante pour rechercher les noms de fichiers commençant par le caractère 'a' et ayant l'extension 'bash' ou 'sh'.

$lsà*+(.frapper|.sh)

Exemple - 2:

Créez un fichier bash nommé 'menu.bash' et ajoutez le script suivant. Si le type d'utilisateur 1 ou S alors il imprimera Recherche de texte . Si le type d'utilisateur 2 ou R alors il imprimera Remplacement du texte . Si le type d'utilisateur 3 ou D alors il imprimera Suppression de texte . il imprimera Réessayer pour toute autre entrée.

#!/bin/bash
chassèrent 'Sélectionnez n'importe quelle option dans le menu :'
lireréponse
Cas $réponse dans
1 |S) chassèrent 'Recherche de texte';;
2 |R) chassèrent 'Remplacement du texte';;
3 |) chassèrent 'Supprimer du texte';;
*) chassèrent 'Réessayer.';;
esac

Exécutez le script.

$frappermenu.bash

CONCLUSION

Certains des modèles de globbing les plus couramment utilisés sont expliqués dans ce didacticiel à l'aide d'exemples très simples. J'espère qu'après avoir pratiqué les exemples ci-dessus, le concept de globbing sera clair pour vous et que vous pourrez l'appliquer avec succès dans les commandes et les scripts bash.

Pour plus d'informations, regardez cette vidéo :