Mise à jour : Debian 9.1
La complétion et command-not-found sont deux utilitaires destinés à faciliter la saisie dans la ligne de commande.
La complétion de ligne de commande est une propriété du shell qui permet de remplir automatiquement tout ou partie d'une commande partiellement saisie.
Cette propriété est fournie par le paquet bash-completion et est activée par défaut dans le fichier de démarrage /etc/bash.bashrc de tous les utilisateurs (et super-utilisateur).
Sur Debian, avec bash,
la touche de complétion est Tab (Tabulation)
si plusieurs complétions sont possibles, utiliser une seconde fois la touche Tab pour afficher les différentes possibilités. Après avoir ajouté un ou plusieurs caractères, l'utilisation de la complétion est à nouveau possible.
la complétion s'applique sur
les commandes et certaines de leurs options
les chemins et noms de fichiers
les noms d'hôte et d'utilisateur
les variables
les noms de modules .....
La liste des commandes disposant de complétion est disponible avec
$ complete -p
Exemples :
$ ls / "Tab" "Tab"
bin/ initrd.img.old proc/ usr/
boot/ lib/ root/ var/
core lib32/ run/ vmlinuz
dev/ lib64/ sbin/ vmlinuz.old
etc/ media/ srv/
home/ mnt/ sys/
initrd.img opt/ tmp/
$ ls /pr "Tab" >>>> oc # ls /proc
$ grub- "Tab" Tab"
grub-editenv grub-mkimage grub-mount
grub-file grub-mklayout grub-ntldr-img
grub-fstest grub-mknetdir grub-render-label
grub-glue-efi grub-mkpasswd-pbkdf2 grub-script-check
grub-kbdcomp grub-mkrelpath grub-syslinux2cfg
grub-menulst2cfg grub-mkrescue
grub-mkfont grub-mkstandalone
$ grub-mkp "Tab" >>>> asswd-pbkdf2 # grub-mkpaswd-pdkf2
Complétion de noms d'hôte
$ ping "Tab" "Tab"
asus localhost
$ ping lo "Tab" >>>> calhost # ping localhost
Complétion de noms d'utilisateur
# chown "Tab" "Tab"
_apt geoclue nobody sys
avahi gnats openvpn systemd-bus-proxy
avahi-autoipd gpsd pengouin systemd-network
backup irc pengouinbis systemd-resolve
..........
Complétion de noms de variables (environnement ou non)
# echo $DB "Tab" >>>>> US_SESSION_BUS_ADDRESS # echo $DBUS_SESSION_BUS_ADDRESS
Complétion de noms de module
# modinfo nvidia "Tab" >>>> -current "Tab" "Tab"
nvidia-current nvidia-current-modeset
nvidia-current-drm nvidia-current-uvm
# modinfo nvidia-current-m "Tab" >>>>>> deset # modinfo nvidia-current-modeset
Lorsqu'une commande inconnue de bash a été saisie, le paquet command-not-found détecte si cette commande appartient à un paquet non installé, mais faisant partie des dépôts présents dans les sources. Si ce n'est pas le cas, command-not-found propose des commandes ayant un nom proche.
Le paquet command-not-found n'est pas installé par défaut, mais lorsqu'il est installé, sa prise en compte est activée par défaut dans le fichier de démarrage /etc/bash.bashrc de tous les utilisateurs (et super-utilisateur).
# apt install command-not-found
# apt update
# update-command-not-found
Activer la prise en compte de command-not-found, en refermant et ré-ouvrant la console.
# rfkill
The program 'rfkill' is currently not installed. You can install it by typing:
apt install rfkill
rfkill: command not found
Test sur une commande absente dans les paquets installés et non installés, par exemple rekill
# rekill
No command 'rekill' found, did you mean:
Command 'rekall' from package 'rekall-core' (main)
Command 'rfkill' from package 'rfkill' (main)
Command 'rkill' from package 'pslist' (main)
rekill: command not found