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 ...