<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Motifs d'englobement du shell</title><meta name="generator" content="DocBook XSL Stylesheets V1.64.0"><link rel="home" href="index.html" title="Manuel de référence"><link rel="up" href="cmdline.html" title="Chapitre 3. Introduction à la ligne de commande"><link rel="previous" href="cmdline-attr.html" title="Manipulation des attributs de fichiers"><link rel="next" href="shell-pipes.html" title="Redirections et tubes"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Motifs d'englobement du shell</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="cmdline-attr.html">Précédent</a> </td><th width="60%" align="center">Chapitre 3. Introduction à la ligne de commande</th><td width="20%" align="right"> <a accesskey="n" href="shell-pipes.html">Suivant</a></td></tr></table><hr></div><div class="sect1" lang="fr"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="glob-regex"></a>Motifs d'englobement du shell</h2></div></div><div></div></div><p><a name="BId-cmdline-pa69"></a> <a class="indexterm" name="BId-cmdline-it33"></a> <a class="indexterm" name="BId-cmdline-it34"></a> <a class="indexterm" name="BId-cmdline-it35"></a> Il est probable que vous utilisiez déjà sans le savoir des caractères d'<a name="BId-cmdline-gt3" href="glossary.html#term-globbing"><i class="glossterm">englobement</i></a>. Quand vous enregistrez un fichier dans une application sous <span class="application">Windows</span> ou lorsque vous recherchez un fichier, vous utilisez <tt class="literal">*</tt> pour désigner une suite de caractères quelconques. Par exemple, <tt class="literal">*.txt</tt> désigne l'ensemble des fichiers dont le nom se termine par <tt class="filename">.txt</tt>. Nous l'avons également utilisé fréquemment dans la section précédente, mais l'englobement va beaucoup plus loin que le seul <tt class="literal">*</tt>. </p><p><a name="BId-cmdline-pa70"></a> Quand vous tapez une commande comme <span><b class="command">ls *.txt</b></span>, puis <b class="userinput"><tt>Entrée</tt></b>, la tâche de trouver quels fichiers correspondent au motif <tt class="literal">*.txt</tt> n'est pas du ressort de <span><b class="command">ls</b></span>, mais doit passer par le <span class="foreignphrase"><i class="foreignphrase">shell</i></span> lui-même. Cela requiert donc une petite explication sur la façon dont le <span class="foreignphrase"><i class="foreignphrase">shell</i></span> interprète une ligne de commande. Lorsque vous tapez :</p><a name="BId-cmdline-sc11"></a><table border="0" bgcolor="#E0E0E0"><tr><td><pre class="screen">$ ls *.txt readme.txt recipes.txt </pre></td></tr></table><p><a name="BId-cmdline-pa71"></a>La ligne de commande est tout d'abord séparée en mots (<tt class="literal">ls</tt> et <tt class="literal">*.txt</tt> en l'occurrence). Quand le <span class="foreignphrase"><i class="foreignphrase">shell</i></span> voit le <tt class="literal">*</tt> 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. Avant que ne s'exécute la ligne de commande dans le <span class="foreignphrase"><i class="foreignphrase">shell</i></span>, ce dernier aura remplacé l'astérisque (<tt class="literal">*</tt>) par <tt class="filename">readme.txt</tt> et <tt class="filename">recettes.txt</tt> ; la commande deviendra donc <span><b class="command">ls readme.txt recettes.txt</b></span>, ce qui donnera le résultat recherché. Le <span class="foreignphrase"><i class="foreignphrase">shell</i></span> réagit aussi à la vue d'autres caractères : </p><div class="itemizedlist"><ul type="disc"><li><p><a name="BId-cmdline-pa72"></a><tt class="literal">?</tt> : correspond à un caractère unique, quel qu'il soit ; </p></li><li><p><a name="BId-cmdline-pa73"></a><tt class="literal">[...]</tt> : <a class="indexterm" name="BId-cmdline-it36"></a>correspond à tout caractère écrit entre les crochets ; les caractères peuvent désigner soit des intervalles (par exemple, <tt class="literal">1-9</tt>), soit des valeurs <a name="BId-cmdline-gt4" href="glossary.html#term-discrete-values"><i class="glossterm">discrètes</i></a>, soit encore un mélange des deux. Exemple : <tt class="literal">[a-zBE5-7]</tt> correspond à tous les caractères de <tt class="literal">a</tt> à <tt class="literal">z</tt>, un <tt class="literal">B</tt>, un <tt class="literal">E</tt>, un <tt class="literal">5</tt>, un <tt class="literal">6</tt> ou un <tt class="literal">7</tt> ; </p></li><li><p><a name="BId-cmdline-pa74"></a><tt class="literal">[^...]</tt> : correspond à tous les caractères qui ne se trouvent <span class="emphasis"><em>pas</em></span> entre les crochets ; <tt class="literal">[^a-z]</tt>, par exemple, correspond à tout caractère qui n'est pas une lettre minuscule<sup>[<a name="id2538163" href="#ftn.id2538163">6</a>]</sup>.</p></li><li><p><a name="BId-cmdline-pa76"></a><tt class="literal">{c1,c2}</tt> : correspond à <tt class="literal">c1</tt> ou <tt class="literal">c2</tt>, où <tt class="literal">c1</tt> et <tt class="literal">c2</tt> sont également des caractères d'englobement, ce qui signifie que vous pouvez écrire <tt class="literal">{[0-9]*,[acr]}</tt> par exemple. </p></li></ul></div><p><a name="BId-cmdline-pa77"></a>Voici quelques exemples de motifs et leur signification : </p><div class="itemizedlist"><ul type="disc"><li><p><a name="BId-cmdline-pa78"></a><tt class="literal">/etc/*conf</tt> : tous les fichiers du répertoire <tt class="filename">/etc</tt> dont le nom se termine par <tt class="filename">conf</tt>. Cela peut correspondre au fichier <tt class="filename">/etc/inetd.conf</tt>, mais aussi à <tt class="filename">/etc/conf.linuxconf</tt>, et à <tt class="filename">/etc/conf</tt> si un tel fichier existe. Souvenez-vous que <tt class="literal">*</tt> peut correspondre à une chaîne vide. </p></li><li><p><a name="BId-cmdline-pa79"></a><tt class="literal">image/{cars,space[0-9]}/*.jpg</tt> : tous les fichiers dont le nom se termine par <tt class="filename">.jpg</tt> dans les répertoires <tt class="filename">image/cars</tt>, <tt class="filename">image/space0</tt>, jusqu'à <tt class="filename">image/space9</tt>, s'ils existent. </p></li><li><p><a name="BId-cmdline-pa80"></a><tt class="literal">/usr/share/doc/*/README</tt> : tous les fichiers de nom <tt class="filename">README</tt> dans tous les sous-répertoires immédiats de <tt class="filename">/usr/share/doc</tt>. Cela correspondra à <tt class="filename">/usr/share/doc/mandrake/README</tt> par exemple, mais pas à <tt class="filename">/usr/share/doc/myprog/doc/README</tt>. </p></li><li><p><a name="BId-cmdline-pa81"></a><tt class="filename">*[^a-z]</tt> : tous les fichiers du répertoire courant dont le nom ne finit <span class="emphasis"><em>pas</em></span> par une lettre minuscule. </p></li></ul></div><div class="footnotes"><br><hr width="100" align="left"><div class="footnote"><p><sup>[<a name="ftn.id2538163" href="#id2538163">6</a>] </sup> <a class="indexterm" name="BId-cmdline-it37"></a> Attention ! Bien que cela soit vrai pour la plupart des langues, il est possible que cela ne fonctionne pas pour votre langue locale. Cela dépend de l'ordre de tri (<span class="foreignphrase"><i class="foreignphrase">collating order</i></span>). Pour certaines configurations de langue, <tt class="literal">[a-z]</tt> correspondra à <tt class="literal">a</tt>, <tt class="literal">A</tt>, <tt class="literal">b</tt>, <tt class="literal">B</tt> (...), <tt class="literal">Z</tt>. Et cela, sans parler du fait que certaines langues contiennent des caractères accentués...</p></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="cmdline-attr.html">Précédent</a> </td><td width="20%" align="center"><a accesskey="u" href="cmdline.html">Niveau supérieur</a></td><td width="40%" align="right"> <a accesskey="n" href="shell-pipes.html">Suivant</a></td></tr><tr><td width="40%" align="left" valign="top">Manipulation des attributs de fichiers </td><td width="20%" align="center"><a accesskey="h" href="index.html">Sommaire</a></td><td width="40%" align="right" valign="top"> Redirections et tubes</td></tr></table></div></body></html>