2.3. Motifs d'englobement du shell

Il est probable que vous utilisiez déjà sans le savoir des caractères d'englobement. Quand vous enregistrez un fichier dans une application sous Windows ou lorsque vous recherchez un fichier, vous utilisez * pour désigner une suite de caractères quelconques. Par exemple, *.txt désigne l'ensemble des fichiers dont le nom se termine par .txt. Nous l'avons également utilisé fréquemment dans la section précédente, mais l'englobement va beaucoup plus loin que le seul *.

Quand vous tapez une commande comme ls *.txt, puis Entrée, la tâche de trouver quels fichiers correspondent au motif *.txt n'est pas du ressort de ls, mais doit passer par le shell lui-même. Cela requiert donc une petite explication sur la façon dont le shell interprète une ligne de commande. Lorsque vous tapez :
$ ls *.txt
readme.txt  recettes.txt
la ligne de commande est tout d'abord séparée en mots (ls et *.txt en l'occurrence). Quand le shell voit le * dans un des mots, il interprète le mot comme étant un motif englobant et le remplace dans la ligne de commande par les noms de tous les fichiers correspondant au motif. La ligne qui se trouve juste avant que ne s'enclenche l'exécution par le shell est donc devenue ls readme.txt recettes.txt, ce qui donnera le résultat recherché. Le shell réagit aussi à la vue d'autres caractères :

Voici quelques exemples de motifs et leur signification :

Notes

[1]

Attention ! Quoique que cela soit vrai sous GNU/Linux, il est possible que cela ne fonctionne pas sur les systèmes d'exploitation de la famille UNIX. Cela dépend de l'ordre de tri (collating order). Sur certains systèmes, [a-z] correspondra à a, A, b, B (...), Z. Et cela, sans parler du fait que certaines langues contiennent des caractères accentués...


Tux sur Étoile de MandrakeSoft Linux est une marque déposée de Linus Torvalds. Toutes les autres marques et copyrights sont la propriété de leurs auteurs respectifs.
Sauf mention contraire, tout le contenu de ces pages et toutes les images sont Copyright MandrakeSoft S.A. et MandrakeSoft Inc. 2002.
http://www.mandrakelinux.com/