logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).


L'icône rouge permet de télécharger chaque page du wiki visitée au format PDF et la grise au format ODT → ODT PDF Export

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
doc:programmation:shell:les-metacaracteres [18/08/2010 06:22]
smolski
doc:programmation:shell:les-metacaracteres [03/03/2017 15:26] (Version actuelle)
debianux [Présentation]
Ligne 1: Ligne 1:
 +====== Les métacaractères,​ ou globs, ou encore patterns ======
  
 +  * Objet : Les métacaractères,​ ou globs, ou encore patterns
 +  * Niveau requis :​{{tag>​débutant avisé}}
 +  * Commentaires : FIXME
 +  * Débutant, à savoir : [[:​doc:​systeme:​commandes:​le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !]] :-)
 +  * Suivi : {{tag>​à-tester}}
 +    * Création par [[user>​MaTTuX_]] le 17/01/2009
 +    * Testé par .... le ....
 +  * Commentaires sur le forum : [[http://​debian-facile.org/​viewtopic.php?​pid=113877#​p113877 |C'est ici]]((N'​hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !))
 +
 +**Nota :** Contributeurs,​ les FIXME sont là pour vous aider, supprimez-les une fois le problème corrigé ou le champ rempli !
 +
 +===== Présentation ===== 
 +
 +Les shells de type bourne (comme **Bash**, **Zsh**, **Ksh**, **Dash**...) supportent une syntaxe
 +très puissante : les **globs** encore appelés **patterns**
 +
 +//(glob: "​global command"​)//​((https://​en.wikipedia.org/​wiki/​Glob_%28programming%29))
 +
 +Les globs les plus basiques sont :
 +
 +===== L'​astérisque (*) : =====
 +
 +L'​astérisque signifie "​n'​importe quelle chaîne de n'​importe quels caractères"​
 +
 +<code user>
 +echo *</​code>​
 +affiche le nom de tous les fichiers du répertoire.
 +
 +==== Exemples ====
 +
 +
 +<code user>
 +for f in *; do echo "​$f";​ done</​code>​
 +Même chose, mais en faisant une boucle. Il sera affiché un fichier par ligne
 +
 +
 +<code user>
 +mv /​repertoire/​*.pdf /​autre/​part</​code>​
 +déplacer tout les fichiers pdf de "/​repertoire"​ et les placer dans "/​autre/​part"​
 +
 +
 +On notera que les fichiers dont le nom commencent par un point ne sont pas affectés par ***** . \\ 
 +//A votre avis, comment peut on faire pour les afficher aussi ?// :-)
 +
 +===== Le point d'​interrogation (?) : =====
 +
 +Un point d'​interrogation signifie "un caractère quelconque et un seul".
 +
 +==== Exemples ====
 +
 +Imaginons que nous nous retrouvions avec les fichiers :
 +<code user>
 +ls</​code>​
 +Affiche :
 +<file config retour de la commande>​toto ​   titi    tata    test    tintin ​   milou
 +
 +</​file>​
 +
 +Nous voulons n'​afficher que les fichiers dont les noms font quatre lettres de longueur :
 +<code user>ls ????</​code>​
 +Affiche :
 +<file config retour de la commande>​tata ​   test    titi    toto
 +</​file>​
 +
 +----
 +\\ 
 +Nous aimerions maintenant afficher les fichiers toto titi et tata, mais ne pas toucher aux autres.
 +
 +Nous pouvons aisément faire, par exemple :
 +<code user>
 +ls t?​t?</​code>​
 +Affiche :
 +<file config retour de la commande>​
 +tata    titi    toto
 +
 +</​file>​
 +
 +Simple, non ? :-)
 +
 +===== Les crochets ([ ]) : =====
 +
 +Nous savons nous servir de *****, de **?**, très bien, mais il ne sont parfois pas assez complets pour exprimer des besoins précis.
 +D'où l'​introduction des **expressions** **entre** **crochet** (POSIX parle de bracket expression).
 +Une expression entre crochets peut avoir plusieurs formes, la plus simple est la liste.
 +
 +La liste ''​[abcde]''​ peut correspondre à n'​importe quel lettre entre crochets : **a** ou **b** ou **c** ou **d** ou **e**. \\ 
 +
 +Donc, ''​[hv]elo''​ peut correspondre à la chaîne de caractères ''​helo''​ tout comme à ''​velo''​.
 +
 +==== Exemples ====
 +
 +Poursuivons avec nos fichiers.
 +
 +Nous aimerions quelque chose d'​encore plus précis qu'​avec ''​t?​t?''​. \\
 + 
 +Pour n'​afficher que ''​toto''​ et ''​titi''​ nous allons utiliser les crochets.
 +
 +La liste des fichiers :
 +<code user>​ls</​code>​
 +Affiche :
 +<file config retour de la commande>​
 +tata    titi    toto    test    tintin ​   milou</​file>​
 +
 +La commande avec les crochets :
 +<code user>
 +ls t[oi]t[oi]</​code>​
 +Affiche :
 +<file config retour de la commande>​
 +titi    toto
 +
 +</​file>​
 +
 +Génial ! Mais, voyons ce qu'il se passe lorsqu'​un fichier au nom inattendu montre le bout de son nez :
 +<code user>
 +touch tito</​code>​
 +
 +Vous savez qui c'est Tito, n'est ce pas ? :-)
 +
 +<code user>
 +ls</​code>​
 +Affiche :
 +<file config retour de la commande>​
 +tata    test    titi    tito    toto    tintin ​   milou</​file>​
 +
 +<code user>
 +ls t[oi]t[oi]</​code>​
 +Affiche :
 +<file config retour de la commande>​
 +titi    tito    toto
 +</​file>​
 +
 +C'est déjà intéressant,​ mais il y a mieux : \\
 +
 +la possibilité d'​utiliser des ''​groupes''​ de lettres dans les expressions entre crochets :
 +<code user>
 +ls t[a-z]t[a-z]</​code>​
 +<file config retour de la commande>​
 +tata  titi  tito  toto
 +</​file>​
 +
 +
 +===== Remarque =====
 +
 +Voilà, vous avez tout en main pour comprendre les **globs** basiques.
 +
 +Pour plus d'​informations,​ n'​oubliez pas le manuel :
 +<code user>man nom-du-programme</​code>​
 +
 +exemple :
 +<code user>man mkdir</​code>​
 +Affiche :
 +<file config retour de la commande>​NAME
 +       mkdir - make directories
 +
 +SYNOPSIS
 +       mkdir [OPTION]... DIRECTORY...
 +
 +DESCRIPTION
 +       ​Create the DIRECTORY(ies),​ if they do not already exist.</​file>​
 +       
 +===Avoir le man en français===
 +Non recommandé :
 +<code root>​apt-get install manpages-fr</​code>​
 +
 +Plus tard nous verrons quelques concepts de **globs** plus avancés.
 +
 +===== Liens =====
 +
 +  * [[:​doc:​programmation:​shell:​regexp | regexp ou Regular Expression ou Expression Régulière]]

Pied de page des forums

Propulsé par FluxBB