====== autocompletion ======
* Objet : autocompletion
* Niveau requis : {{tag>débutant avisé}}
* Commentaires : //Outil auto-complémentaire pour écrire en ligne de commande. //
* Débutant, à savoir : [[:doc:systeme:commandes:le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !.]] :-)
* Suivi : {{tag>à-tester}}
* Création par [[user>smolski]] le 12/04/2010
* Ajout chapitre "Installation" par [[user>slyfox]] le 16/04/2015
* Testé par <...> le <...>
* Commentaires sur le forum : [[http://debian-facile.org/viewtopic.php?id=9023 | Lien vers le forum concernant ce tuto]]((N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !))
===== Préalable =====
L'**auto-completion** ((en français : //auto-complètement ou auto-complémentation ou encore complétion automatique//)) est un outil pour gagner en rapidité lorsque vous tapez des commandes dans un terminal ou une console. Il sera également un outil de sécurité indispensable pour rédiger des lignes de commande __sans se tromper__ ;-) !
==== Exemple de recherche par l'auto-complètement ====
Par exemple, dans un terminal, comment accéder à son répertoire personnel. Le répertoire personnel d'un utilisateur est habituellement dans le répertoire ''/home'' monté dans le système.
Ouvrir le terminal,
puis taper une commande, mettons ''ls -l'' voir [[:doc:systeme:ls|Commande Linux : ls]] et débuter la complétion avec /ho ainsi :
ls -l /ho
taper sur la touche Tab du clavier et le complètement vers le répertoire ''/home/'' se réalise. Nous obtenons la ligne :
ls -l /home/
Maintenant, imaginons que nous ne nous souvenons plus vraiment de notre pseudo ''user'' sur ce pc...
Il suffit maintenant de taper **DEUX FOIS** sur la touche Tab du clavier, et une liste des possibilités pour continuer nous est offerte avec tous les choix possibles, il suffit alors d'ajouter une ou quelques lettres pour indiquer ce que l'on cherche, taper sur la tabulation et le complètement se fera.
Si la tabulation n'indique plus rien sans nous faire parvenir à ce que l'on souhaite, c'est qu'on a ajouté ou omis un caractère, l'autocompletion comme tout ce qui est informatique n'est qu'un //calculateur//, pas un //divinateur//, qu'on se le dise !
L'essayer, c'est l'adopter !
===== Installation =====
Sous Debian Jessie, il y a une prise en charge d'origine grâce au paquet **util-linux** qui est installé d'office. Cette prise en charge première peut être améliorée en installant un autre paquet : **bash-completion**.
Installation du paquet bash-completion:
apt-get update && apt-get install bash-completion
===== Utilisation =====
Il se peut qu'il vous faille configurer le fichier /etc/bash.bashrc . Dans ce cas, ouvrir un éditeur de texte, par exemple [[doc:editeurs:nano|nano]]:
nano /etc/bash.bashrc
Rechercher la ligne **# enable bash completion in interactive shell** et supprimer les dièses (#) sur la portion de code après cette ligne jusqu'au dernier ''fi''. Ce qui doit donner au final :
# enable bash completion in interactive shells
if ! shopt -oq posix; then
if [ -f /usr/share/bash-completion/bash_completion ]; then
. /usr/share/bash-completion/bash_completion
elif [ -f /etc/bash_completion ]; then
. /etc/bash_completion
fi
fi
C-o puis Entrée puis C-x
Dans certains cas, la manipulation ci-dessus peut s'avérer inutile, lorsque l'auto-complétion est activée au niveau des sessions utilisateurs :
# enable programmable completion features (you don't need to enable
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
# sources /etc/bash.bashrc).
if ! shopt -oq posix; then
if [ -f /usr/share/bash-completion/bash_completion ]; then
. /usr/share/bash-completion/bash_completion
elif [ -f /etc/bash_completion ]; then
. /etc/bash_completion
fi
fi
===== Détail =====
Lorsque vous écrivez une commande dans un terminal, une astuce bien pratique consiste à utiliser la touche Tab (tabulation de votre clavier) pour **auto-compléter** le chemin du fichier.
Au lieu de taper le nom du fichier au complet, on tape seulement les premières lettres puis la touche de tabulation ((Tab dans les tutos)).
===== Exemple =====
Je veux, par exemple, taper la ligne :
ls -l martin/documents/
Pour ce faire, après ls -l je peux écrire ''mar'' :
ls -l mar
et en tapant sur la touche Tab, cela complétera automatiquement la ligne avec martin. Ce qui nous donne :
ls -l martin/
puis ajouter ''doc'' :
ls -l martin/do
+Tab pour compléter par documents/ :
ls -l martin/documents/
//Et ainsi de suite...//
Cette façon de faire, tout en étant plus rapide, permet d'__éviter des erreurs de frappe__, car en cas de refus de complétion :
c'est qu'il y a **OBLIGATOIREMENT** une erreur //dans la rédaction// de la commande !
=== À noter : ===
ATTENTION ! L'auto-complètement ne fonctionne pas **après** un caractère générique, une * (étoile) par exemple, voir : [[:doc:programmation:shell:les-metacaracteres | Les METACARACTERES]].
//Et un gros merci à TrueDD sur le chan pour cette précision !//
Note trebmuh 11 novembre 2015. Ici, ça marche (tm). Debian Jessie.
Tuto initié par **kate74** que nous remercions vivement de son activité sur le forum ! :-)