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
Prochaine révision Les deux révisions suivantes
doc:programmation:shell:les-metacaracteres [17/08/2010 21:35]
cthuluh
doc:programmation:shell:les-metacaracteres [22/09/2013 23:31]
127.0.0.1 modification externe
Ligne 1: Ligne 1:
 +====== Les métacaractères,​ ou globs, ou encore patterns ======
  
 +Les shells de type bourne (comme **Bash**, **Zsh**, **Ksh**, **Dash**...) supportent une syntaxe
 +très puissante : les **globs** encore appelés **patterns**
 +
 +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 bash>
 +$ echo *</​code>​
 +affiche le nom de tous les fichiers du répertoire.
 +
 +==== Exemples ====
 +
 +
 +----
 +\\ 
 +<code bash>
 +$ for f in *; do echo "​$f";​ done</​code>​
 +Même chose, mais en faisant une boucle. Il sera affiché un fichier par ligne
 +
 +----
 +\\ 
 +<code bash>
 +$ 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 bash>
 +$ ls
 +toto    titi    tata    test    tintin ​   milou
 +$
 +</​code>​
 +
 +Nous voulons n'​afficher que les fichiers dont les noms font quatre lettres de longueur :
 +<code bash>
 +$ ls ????
 +tata    test    titi    toto
 +$
 +</​code>​
 +
 +----
 +\\ 
 +Nous aimerions maintenant afficher les fichiers toto titi et tata, mais ne pas toucher aux autres.
 +
 +Nous pouvons aisément faire, par exemple :
 +<code bash>
 +$ ls t?t?
 +tata    titi    toto
 +$
 +</​code>​
 +
 +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 bash>$ ls
 +tata    titi    toto    test    tintin ​   milou</​code>​
 +
 +La commande avec les crochets :
 +<code bash>
 +$ ls t[oi]t[oi]
 +titi    toto
 +$
 +</​code>​
 +
 +Génial ! Mais, voyons ce qu'il se passe lorsqu'​un fichier au nom inattendu montre le bout de son nez :
 +<code bash>
 +$ touch tito</​code>​
 +
 +Vous savez qui c'est Tito, n'est ce pas ? :-)
 +
 +<code bash>
 +$ ls
 +tata    test    titi    tito    toto    tintin ​   milou</​code>​
 +
 +<code bash>
 +$ ls t[oi]t[oi]
 +titi    tito    toto
 +$
 +</​code>​
 +
 +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 bash>
 + $ ls [a-z][a-z]</​code>​
 +
 +
 +===== Remarque =====
 +
 +Voilà, vous avez tout en main pour comprendre les **globs** basiques.
 +
 +Pour plus d'​informations,​ n'​oubliez pas :
 +   man <​votreshell>​
 +
 +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]]
doc/programmation/shell/les-metacaracteres.txt · Dernière modification: 03/03/2017 15:26 par debianux

Pied de page des forums

Propulsé par FluxBB