Linux-Mandrake: Manuel de référence | ||
---|---|---|
Page précédente | Chapitre 3. Introduction à la ligne de commande | Page suivante |
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, quand vous recherchez un fichier, vous utilisez * pour désigner une suite de caractères quelconque. Par exemple, *.txt désigne l'ensemble des fichiers dont le nom se termine par .txt. Nous l'avons également beaucoup utilisé 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 |
? : correspond à un caractère unique, quel qu'il soit;
[...] : correspond à tout caractère écrit entre les crochets; les caractères peuvent désigner soit des intervalles (par exemple, 1-9), soit des valeurs discrètes, soit encore un mélange des deux. Exemple : [a-zBE5-7] correspond à tous les caractères de a à z, un B, un E, un 5, un 6 ou un 7;
[!...] : correspond à tous les caractères qui ne se trouvent pas entre les crochets; [!a-z], par exemple, correspond à tout caractère qui n'est pas une lettre minuscule[1]
{c1,c2} : correspond à c1 ou c2, où c1 et c2 sont également des caractères d'englobement, ce qui signifie que vous pouvez écrire {[0-9]*,[acr]} par exemple.
Voici quelques exemples de motifs et leur signification :
/etc/*conf : tous les fichiers du répertoire /etc dont le nom se termine par conf. Cela peut correspondre au fichier /etc/inetd.conf, mais aussi à /etc/conf.linuxconf, et à /etc/conf si un tel fichier existe. Souvenez-vous que * peut correspondre à une chaîne vide.
image/cars,space[0-9]/*.jpg : tous les fichiers dont le nom se termine par .jpg dans les répertoires image/cars, image/space0, jusqu'à image/space9, s'ils existent.
/usr/doc/*/README : tous les fichiers de nom README dans tous les sous-répertoires immédiats de /usr/share/doc. Cela correspondra à /usr/share/doc/mandrake/README par exemple, mais pas à /usr/share/doc/myprog/doc/README.
*[!a-z] : tous les fichiers du répertoire courant dont le nom ne finit pas par une lettre minuscule.
[1] | Attention :! Quoique que cela soit vrai sous GNU/Linux, il est possible que cela ne fonctionne pas sur les systèmes d'opération de la famille Unix. Cela dépend de l'ordre de préséance (collating order). Sur certains sytèmes, [a-z] correspondra à a, A, b, B (...), Z. Et comme certaines langues, comme le français, utilisent des caractères accentués... |
Page précédente | Début | Page suivante |
Manipulation des attributs de fichiers | Remonter | Redirections et tubes |