complete
est une fonction intégrée de bash. Il n'y a donc pas de binaire sur le système. Il gère la façon dont les commandes seront exécutées lorsque vous appuyez sur tab.
Exemple: si vous tapez:
user@host:~$ pidof <tab><tab>
... une liste apparaît avec toutes les valeurs possibles pour cette commande. Dans ce cas, cela signifie tous les processus en cours d'exécution. Voir la sortie de la complete
fonction:
user@host:~$ complete | grep pidof
complete -F _pgrep pidof
Cela signifie que la fonction _pgrep
(-F) est exécutée lors de la tabulation de la commande pidof
. La définition de cette fonction est en /etc/bash_completion.d/procps
.
Un autre exemple: si vous tapez:
user@host:~$ cd /usr/<tab><tab>
bin/ games/ include/ lib/ lib32/ local/ sbin/ share/ src/
... vous voyez la liste des dossiers que vous pouvez cd
sous /usr/
. Quelle fonction est exécutée? greping la complete
fonction (comme ci-dessus) nous dit que c'est la fonction _cd
dans /etc/bash_completion
.
Faites-le vous - même : vous avez un programme / script appelé /bin/myprog
et vous le souhaitez si vous l'exécutez comme suit
user@host:~$ myprog /home/user/<tab><tab>
... il ne doit lister que les dossiers, pas les fichiers. Étendez donc votre complétion bash avec la commande suivante:
user@host:~$ complete -F _cd myprog
C'est ça. Vous pouvez également écrire vos propres fonctions pour compléter des choses personnalisées, par exemple remplir uniquement des fichiers spécifiques ou des nombres ou des listes de valeurs statiques ...