Tutoriel global bash

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

Point d'interrogation - (?)

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

Exemple 1:

Supposons que vous souhaitez rechercher ces noms de fichiers de texte dont les noms sont longs et l'extension est .SMS. Vous pouvez appliquer un modèle global en utilisant '?'Quatre fois pour faire cette tâche.

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

$ ls -l

Exécutez la commande suivante Recherchez les fichiers dont les noms sont de quatre caractères et inconnus.

$ ls -l ????.SMS

Exemple-2:

Supposons que vous souhaitez rechercher ces fichiers de document dont les noms sont de 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 un modèle global pour rechercher les fichiers.

$ ls -l pied????.doc

Exemple-3:

Supposons, vous savez que le nom de fichier est 'meilleur' Et l'extension mesure 3 caractères, mais je ne connais pas l'extension. Exécutez la commande suivante en utilisant '?«Pour rechercher tous les fichiers avec le nom« test »ayant une extension de trois caractères.

$ ls -l meilleur.???

Astérisque - (*)

'*' est utilisé pour correspondre à zéro ou plus de caractères. Si vous avez moins d'informations pour rechercher un fichier ou des informations, vous pouvez utiliser '*' en schéma global.

Exemple 1:

Supposons que vous souhaitez 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 connaissiez le caractère de départ du nom de fichier uniquement qui est 'un'. Exécutez la commande suivante en utilisant '*' pour rechercher tous les fichiers du répertoire actuel dont les noms sont démarrés avec 'un'.

$ ls -l a *.*

Exemple-3:

Vous pouvez appliquer '*' dans le script bash à diverses fins sans rechercher des fichiers. Créer un fichier bash nommé 'vérifier.sh ' avec le script suivant. Ici, lorsque l'utilisateur tapera 'y 'ou' y 'ou' oui 'ou' oui ' alors 'confirmé' Imprimera et quand le type tapera 'n' ou 'n' ou 'non' ou 'non' alors 'Pas confirmé' Will imprimer.

#!/ bac / bash
Echo "Voulez-vous confirmer?"
lire la réponse
Case $ Réponse dans
[Yy] *) echo "Confirmé.";;
[Nn] *) echo "Non confirmé.";;
*) ECHO "Ressayer.";;
ESAC

Exécutez le script.

$ bash chèque.shot

Bracket carré - ([])

'[]' est utilisé pour correspondre au caractère de la gamme. Certaines des déclarations de plage principalement utilisées sont mentionnées ci-dessous.

Tous les alphabets majuscules sont définis par la gamme comme, [: supérieur:] ou [a-z] .

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

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

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

Tous les alphabets majuscules, l'alphabet en minuscules et les 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 q 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] *

Caret - (^)

Vous pouvez utiliser '^' avec le crochet pour définir plus spécifiquement le motif global. '^' peut être utilisé à l'intérieur ou à l'extérieur de la crochet. '^' est utilisé à l'extérieur du support carré pour rechercher le contenu du fichier qui commence par une plage de caractères donnée. '^' est utilisé à l'intérieur du support pour afficher tout le contenu du fichier en mettant en évidence les lignes de début avec une gamme de caractères donnée . Vous pouvez utiliser différents types de modèles globbing pour rechercher un contenu particulier à partir d'un fichier. 'grep' La commande est utilisée pour la recherche de contenu en bash. Supposons que vous ayez un fichier texte nommé 'liste.SMS' 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.SMS le fichier qui commence par P ou Q ou R.

$ grep '^ [p-r]' liste.SMS

Exemple - 2:

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

$ grep '[^ a-c]' liste.SMS

Signe exclamatoire - (!)

Vous pouvez utiliser '!' À l'intérieur du modèle de plage. Cela fonctionne comme l'utilisation du symbole '^' en dehors du motif de plage. Quelques exemples d'utilisation '!' le signe est donné ci-dessous.

Exemple 1:

Exécutez la commande suivante pour afficher ces lignes de liste.SMS le fichier qui commence par 'P' ou Q ou R.

$ grep [!Liste P-R].SMS

Exemple - 2:

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

$ grep [!4-8] liste.SMS

Signe en dollars - ($)

'$' est utilisé pour définir le caractère final. Si vous savez que vous souhaitez rechercher des informations basées sur le dernier caractère, vous pouvez utiliser '$' en schéma global.

Exemple 1:

Exécutez la commande suivante pour rechercher ces lignes à partir de liste.SMS le fichier qui se termine avec 'un'.

$ grep Une liste de $.SMS

Exemple - 2:

Exécutez la commande suivante pour rechercher ces lignes à partir de liste.SMS Fixer qui se termine par le numéro 50.

$ grep 50 $ liste.SMS

Curly Bracket - ()

'' peut être utilisé pour faire correspondre les noms de fichiers avec plus d'un modèle global. Chaque motif est séparé par «» dans un support bouclé sans aucun espace. Quelques exemples sont donnés ci-dessous.

Exemple 1:

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

$ ls -l ?????.sh, * st.SMS

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 global. Chaque motif est séparé par '|' symbole dans la commande.

Exemple 1:

Exécutez la commande suivante pour rechercher les noms de fichiers qui commencent par le caractère «a» et a l'extension «bash» ou «sh».

$ ls a * + (.bash |.sh)

Exemple - 2:

Créer un fichier bash nommé 'menu.frapper' et ajouter le script suivant. Si le type d'utilisateur 1 ou s Ensuite, il imprimera «Recherche de texte». Si le type d'utilisateur 2 ou R Ensuite, il imprimera "Remplacement du texte". Si le type d'utilisateur 3 ou D Ensuite, il imprimera «Suppression de texte". Il imprimera "Essayer à nouveau" pour toute autre entrée.

#!/ bac / bash
ECHO "Sélectionnez n'importe quelle option dans le menu:"
lire la réponse
Case $ Réponse dans
1 | S) Echo "Recherche de texte" ;;
2 | R) echo "Remplacement du texte" ;;
3 | D) Echo "Suppression de texte" ;;
*) ECHO "Ressayer.";;
ESAC

Exécutez le script.

Menu $ bash.frapper

CONCLUSION

Certains des modèles globbing les plus couramment utilisés sont expliqués dans ce tutoriel en utilisant des 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 vous pourrez l'appliquer dans les commandes et les scripts de bash.

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