complete
é uma função integrada do bash. Portanto, não há um binário no sistema. Ele manipula como os comandos serão concluídos ao pressionar a aba .
Exemplo: se você digitar:
user@host:~$ pidof <tab><tab>
... uma lista está aparecendo com todos os valores possíveis para este comando. Neste caso, significa todos os processos em execução. Veja a saída da função complete
:
user@host:~$ complete | grep pidof
complete -F _pgrep pidof
Isso significa que a função _pgrep
(-F) é executada ao tabular o comando pidof
. A definição desta função está em /etc/bash_completion.d/procps
.
Outro exemplo: se você digitar:
user@host:~$ cd /usr/<tab><tab>
bin/ games/ include/ lib/ lib32/ local/ sbin/ share/ src/
... você vê a lista de pastas em que você pode cd
em /usr/
. Qual função é executada? greping a função complete
(como acima) nos diz que é o funtction _cd
in /etc/bash_completion
.
Faça você mesmo : Você tem um programa / script chamado /bin/myprog
e você quer que, se você executá-lo da seguinte forma
user@host:~$ myprog /home/user/<tab><tab>
... só deve listar pastas, não arquivos. Então, estenda sua conclusão do bash com o seguinte comando:
user@host:~$ complete -F _cd myprog
É isso. Você também pode escrever suas próprias funções para completar coisas personalizadas, por exemplo, completar apenas arquivos ou números específicos ou listas de valores estáticos ...