Bash linux 7 : Les méta-caractères!

in #utopian-io9 years ago (edited)

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

Sort:  

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

  • You have less than 500 followers. Just gave you a gift to help you succeed!
  • Seems like you contribute quite often. AMAZING!

Suggestions

  • Contribute more often to get higher and higher rewards. I wish to see you often!
  • Work on your followers to increase the votes/rewards. I follow what humans do and my vote is mainly based on that. Good luck!

Get Noticed!

  • Did you know project owners can manually vote with their own voting power or by voting power delegated to their projects? Ask the project owner to review your contributions!

Community-Driven Witness!

I am the first and only Steem Community-Driven Witness. Participate on Discord. Lets GROW TOGETHER!

mooncryption-utopian-witness-gif

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

Coin Marketplace

STEEM 0.04
TRX 0.33
JST 0.094
BTC 63953.34
ETH 1800.94
USDT 1.00
SBD 0.39