Bash linux 7 : Les méta-caractères!
Les méta-caractères!
Introduction
This article is about using Wildcards in order to handle a group of files instead of one, they are useful in the sens that they enable us to reduce the time and the provided effort needed to treat a file.

Qu'est ce que c'est un méta-caractère?
Les méta-caractères sont un ensemble de blocs de construction qui vous permettent de créer un chemin définissant un ensemble de fichiers ou de répertoires.
Voici quelques caractères de remplacements basiques:
- *****(étoile)- représente un ou plusieurs caractères quelconques
- ? -représente exactement un caractère
Dans l'exemple ci-dessous, on va lister tout fichier commençant par b à l'aide du caractère de remplacement *.
user@bash: pwd
/home/nick/logicieldebases
user@bash:
user@bash: ls
cours.txt bernard exams.txt tp.txt bin2 solutions.txt bin3 apercu.jpg bilan.txt views.jpg
user@bash:
user@bash: ls b*
bernard bin3 bilan.txt
user@bash
Sous le capot
Au début, vous allez croire que la commande ls reçoit l'argument b* qui modifie son comportement. En fait, c'est bash(le programme qui fournit l'interface de ligne de commande) qui fait l'opération. quand on tape cette commande, il est signalé qu'on a utilisé des méta-caractères, avant l'exécution de la commande , le pattern est remplacé avec tout fichier ou répertoire correspondant au pattern entré. On lance la commande avec:
- ls b*
Le système traduit ceci en:
- ls bernard bin3 bilan.txt
puis exécuter le programme. le programme ne néglige jamais la présence des méta-caractères.
Exemples
Pour l'exemple ci-dessous, on se trouve dans le répertoire logicieldebases qui contient des fichiers. Notez que j'utilise dans ces exemples la commande ls simplement parceque c'est le moyen le plus commode pour comprendre l'usage des méta-caractères,ceux-ci peuvent être utilisés avec d'autres commandes.
user@bash: ls /home/nick/logicieldebases/*.txt
/home/nick/logicieldebases/bilan.txt
/home/nick/logicieldebases/cours.txt
/home/nick/logicieldebases/tp.txt
/home/nick/logicieldebases/solutions.txt
/home/nick/logicieldebases/exams.txt
user@bash:
Maintenant passant à l'opérateur ?. Dans cet exemple, on va chercher tout nom de fichier qui a i comme deuxième lettre. Comme vous l'avez constaté, le pattern peut contenir plusieurs méta-caractères.
user@bash: ls *.???
bin2 bin3 bilan.txt
user@bash:
Maintenant,on va chercher tous les fichiers qui ont une extension composé de 3 caractères.
user@bash: ls *.???
cours.txt bilan.txt exams.txt tp.txt solutions.txt
user@bash:
Et finalement l'opérateur d'intervalle([]), celui-ci vous permet de vous limiter à une sous-catégorie de caractères. Dans l'exemple ci-dessous, on va chercher les fichiers dont le nom commence avec s ou v.
user@bash: ls [sv]*
solutions.txt views.jpg
user@bash:
L'opérateur d'intervalle a aussi un autre usage . Par exemple, si on veut trouver un fichier dont le nom contient un chiffre on peut lancer la commande comme suivant:
user@bash: ls *[0-9]*
bin2 bin3
user@bash:
Cette commande peut avoir un résultat contraire si on utilise l'accent circonflexe (^) dans le sens où on peut demander l'affichage des noms de fichiers qui contiennent pas les caractères demandés.
user@bash: ls [^a-i]^
cours.txt exams.txt tp.txt
user@bash:
Exemples très utiles
les exemples ci-dessus illustrent le fonctionnement des méta-caractères, il faut juste être un peu créatif pour pouvoir s'en servir dans beaucoup de situations.
user@bash: file/home/nick/*
bin: directory
Documents: directory
horizon.png: PNG image data
public_html : directory
user@bash:
Déplacer tous les fichiers jpg out png vers un autre répertoire.
user@bash: mv public_html/*.??g public_html/images/
user@bash:
Découvrir le temps de modification de fichier bash_history dans tous les répertoires home des utilisateurs. Comme vous l'avez remarqué, on peut utiliser les méta-caractères à n'importe quel endroit dans le chemin d'accès.
user@bash: ls -lh /home/*/.bash_history
-rw----- 1 john users 5.6K Feb 7 05:32
/home/john/.bash_history
-rwx----- 1 jonas users 7.5K Jun 15 10:14
/home/jonas/.bash_history
user@bash:
Posted on Utopian.io - Rewarding Open Source Contributors
Thank you for the contribution. It has been approved.
You can contact us on Discord.
[utopian-moderator]
Hey @raptorjesus I am @utopian-io. I have just upvoted you!
Achievements
Suggestions
Get Noticed!
Community-Driven Witness!
I am the first and only Steem Community-Driven Witness. Participate on Discord. Lets GROW TOGETHER!
Up-vote this comment to grow my power and help Open Source contributions like this one. Want to chat? Join me on Discord https://discord.gg/Pc8HG9x