<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Le complètement (completion) dans les lignes de commande</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="shell-pipes.html" title="Redirections et tubes"><link rel="next" href="cmdline-job.html" title="Lancement et manipulation de processus en arrière-plan"></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">Le complètement (completion) dans les lignes de commande</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="shell-pipes.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="cmdline-job.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="cmdline-completion"></a>Le complètement (<span class="foreignphrase"><i class="foreignphrase">completion</i></span>) dans les lignes de commande</h2></div></div><div></div></div><p><a name="BId-cmdline-pa100"></a> <a class="indexterm" name="BId-cmdline-it48"></a> <a name="BId-cmdline-gt5" href="glossary.html#term-completion"><i class="glossterm">Complètement</i></a> Le complètement est une fonctionnalité des plus pratiques et tous les <span class="foreignphrase"><i class="foreignphrase">shells</i></span> modernes (dont <span class="application">bash</span>) l'incluent désormais. Son but est d'aider l'utilisateur à en faire le moins possible. La meilleure façon d'illustrer ceci est de donner un exemple. </p><div class="sect2" lang="fr"><div class="titlepage"><div><div><h3 class="title"><a name="id2539373"></a>Un exemple</h3></div></div><div></div></div><p><a name="BId-cmdline-pa101"></a>Supposons que vous ayez dans votre répertoire personnel un fichier <tt class="filename">fichier_au_nom_très_long_impossible_à_taper</tt>, et que vous vouliez le consulter. Mais, vous avez également dans ce même répertoire un autre fichier appelé <tt class="filename">fichier_texte</tt>. Que faire ? Vous vous trouvez dans votre répertoire personnel et vous tapez alors la séquence suivante : </p><a name="BId-cmdline-sc22"></a><table border="0" bgcolor="#E0E0E0"><tr><td><pre class="screen">$ less fi<TAB></pre></td></tr></table><p><a name="BId-cmdline-pa102"></a> (c'est-à-dire, tapez <span><b class="command">less fi</b></span> suivi d'une pression sur la touche <b class="userinput"><tt>TAB</tt></b>). Le <span class="foreignphrase"><i class="foreignphrase">shell</i></span> aura alors étendu la ligne de commande pour vous : </p><a name="BId-cmdline-sc23"></a><table border="0" bgcolor="#E0E0E0"><tr><td><pre class="screen">$ less fichier_</pre></td></tr></table><p><a name="BId-cmdline-pa103"></a> et aura également marqué la liste des choix possibles (dans sa configuration par défaut, qui peut être personnalisée). Tapez alors la séquence de touches suivante : </p><a name="BId-cmdline-sc24"></a><table border="0" bgcolor="#E0E0E0"><tr><td><pre class="screen">less fichier_a<TAB></pre></td></tr></table><p><a name="BId-cmdline-pa104"></a> et le <span class="foreignphrase"><i class="foreignphrase">shell</i></span> aura étendu la ligne de commande pour obtenir le résultat que vous souhaitiez : </p><a name="BId-cmdline-sc25"></a><table border="0" bgcolor="#E0E0E0"><tr><td><pre class="screen">less fichier_au_nom_très_long_impossible_à_taper</pre></td></tr></table><p><a name="BId-cmdline-pa105"></a> Il ne vous reste plus alors qu'à taper sur la touche <b class="userinput"><tt>Entrée</tt></b> pour valider et consulter le fichier. </p></div><div class="sect2" lang="fr"><div class="titlepage"><div><div><h3 class="title"><a name="id2539530"></a>Autres méthodes de complètement</h3></div></div><div></div></div><p><a name="BId-cmdline-pa106"></a><a class="indexterm" name="BId-cmdline-it49"></a> La touche <span class="keysym">TAB</span> n'est pas l'unique moyen d'activer le complètement, bien qu'il soit le plus courant. En général, le mot à compléter sera un nom de commande pour le premier mot de la ligne de commande (<span><b class="command">nsl<TAB></b></span> donnera <span><b class="command">nslookup</b></span>), et un nom de fichier pour tous les autres, à moins que le mot ne soit précédé d'un caractère « <span class="quote">magique</span> » parmi <tt class="literal">~</tt>, <tt class="literal">@</tt> ou <tt class="literal">$</tt>. Dans ce cas, le <span class="foreignphrase"><i class="foreignphrase">shell</i></span> essaiera de compléter respectivement un nom d'utilisateur, un nom de machine ou une variable d'environnement<sup>[<a name="id2539616" href="#ftn.id2539616">9</a>]</sup>. Il existe également un caractère magique pour compléter un nom de commande (<tt class="literal">!</tt>) ou un nom de fichier (<tt class="literal">/</tt>). </p><p><a name="BId-cmdline-pa108"></a> Les deux autres façons d'activer le complètement sont les séquences <b class="userinput"><tt>Esc-<x></tt></b> et <b class="userinput"><tt>Ctrl+x <x></tt></b> (<b class="userinput"><tt>Esc</tt></b> pour la touche <b class="userinput"><tt>Échap</tt></b>, <b class="userinput"><tt>Ctrl+x</tt></b> voulant dire <b class="userinput"><tt>Control</tt></b>+<tt class="option"><x></tt>) où <tt class="literal"><x></tt> est l'un des caractères magiques déjà mentionnés. Taper <b class="userinput"><tt>Esc-<x></tt></b> réussira le complètement seulement s'il n'y a pas d'ambiguïté et, en cas d'échec, complétera le mot à la plus grande sous-chaîne possible dans la liste des choix. Un <a name="BId-cmdline-gt6" href="glossary.html#term-beep"><i class="glossterm">bip</i></a> signifie soit que le choix n'est pas univoque ou qu'il n'y a tout simplement pas de choix correspondant. La séquence <b class="userinput"><tt>Ctrl+x <x></tt></b> affichera la liste des choix possibles sans tenter aucun complètement. La pression sur la touche <b class="userinput"><tt>TAB</tt></b> est équivalente à une pression successive de <b class="userinput"><tt>Esc-<x></tt></b> et de <b class="userinput"><tt>Ctrl+x <x></tt></b>, le caractère magique dépendant du contexte. </p><p><a name="BId-cmdline-pa109"></a> Ainsi, une des façons permettant de voir toutes les variables d'environnement définies est de taper sur une ligne vierge la séquence <b class="userinput"><tt>Ctrl+x $</tt></b>. Un autre cas : pour voir la page de manuel de la commande <span><b class="command">nslookup</b></span>, il suffira de taper <span><b class="command">man nsl</b></span> puis <b class="userinput"><tt>Esc-!</tt></b>, et le <span class="foreignphrase"><i class="foreignphrase">shell</i></span> complétera automatiquement la commande vers <span><b class="command">man nslookup</b></span>. </p></div><div class="footnotes"><br><hr width="100" align="left"><div class="footnote"><p><sup>[<a name="ftn.id2539616" href="#id2539616">9</a>] </sup>Souvenez-vous : <span class="application">UNIX</span> différencie les majuscules des minuscules. La variable d'environnement <tt class="varname">HOME</tt> et la variable <tt class="varname">home</tt> ne sont pas les mêmes. Il existe aussi un caractère magique pour compléter un nom de fichier (<tt class="literal">/</tt>) et une commande pour rappeler une commande de l'historique (<tt class="literal">!</tt>).</p></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="shell-pipes.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="cmdline-job.html">Suivant</a></td></tr><tr><td width="40%" align="left" valign="top">Redirections et tubes </td><td width="20%" align="center"><a accesskey="h" href="index.html">Sommaire</a></td><td width="40%" align="right" valign="top"> Lancement et manipulation de processus en arrière-plan</td></tr></table></div></body></html>