5. Le complètement dans les lignes de commande

Complètement Le complètement (completion) est une fonctionnalité des plus pratiques et tous les shells modernes (dont bash) 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.

5.1. Exemple

Supposons que vous ayez dans votre répertoire personnel un fichier fichier_au_nom_très_long_impossible_à_taper, et que vous vouliez le consulter. Mais, vous avez également dans ce même répertoire un autre fichier appelé fichier_texte. Que faire ? Vous vous trouvez dans votre répertoire personnel et vous tapez alors la séquence suivante :

$ less fi<TAB>

(c'est-à-dire, tapez less fi et appuyez sur la touche TAB). Le shell aura alors étendu la ligne de commande pour vous :

$ less fichier_

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 :

less fichier_a<TAB>

et le shell aura étendu la ligne de commande pour obtenir le résultat que vous souhaitiez :

less fichier_au_nom_très_long_impossible_à_taper

Il ne vous reste plus alors qu'à appuyer sur la touche Entrée pour valider et consulter le fichier.

5.2. Autres méthodes de complètement

La touche TAB 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 (nsl<TAB> donnera nslookup), et un nom de fichier pour tous les autres, à moins que le mot ne soit précédé d'un caractère « magique » parmi ~, @ ou $. Dans ce cas, le shell essaiera de compléter respectivement un nom d'utilisateur, un nom de machine ou une variable d'environnement[9]. Il existe aussi un caractère magique pour compléter un nom de fichier (/) et une commande pour rappeler une commande de l'historique (!)

Les deux autres façons d'activer le complètement sont les séquences Esc-<x> et Ctrl-X-<x> (Esc pour la touche Échap) où <x> est l'un des caractères magiques déjà mentionnés. Taper Esc-<x> 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 bip signifie soit que le choix n'est pas univoque ou qu'il n'y a tout simplement pas de choix correspondant. La séquence Ctrl-X-<x> affichera la liste des choix possibles sans tenter de complètement. La pression sur la touche TAB est équivalente à une pression successive de Esc-<x> et de Ctrl-X-<x>, le caractère magique dépendant du contexte.

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 Ctrl+x $. Un autre cas : pour voir la page de manuel de la commande nslookup, il suffira de taper man nsl puis Esc-!, et le shell complétera automatiquement la commande vers man nslookup.



[9] Rappelez-vous : UNIX différencie les majuscules des minuscules. La variable d'environnement HOME et la variable home ne sont pas les mêmes.