Para que serve o comando completo?

17

Ao executar o completecomando no meu gnome-terminal, ele mostra alguns comandos. O que são? E qual é a utilidade do completecomando?

$ complete
complete -F _minimal 
complete -F _filedir_xspec oodraw
complete -F _filedir_xspec elinks
complete -F _filedir_xspec freeamp
complete -F _longopt split
complete -F _longopt sed
complete -F _longopt ld
complete -F _longopt grep
complete -F _service /etc/init.d/vboxweb-service
complete -F _service /etc/init.d/vboxballoonctrl-service
complete -F _service /etc/init.d/rc
complete -F _service /etc/init.d/nmbd
complete -F _service /etc/init.d/halt
complete -j -P '"%' -S '"' jobs
complete -d pushd

Lista vai longa, então eu postei alguns deles.

Avinash Raj
fonte
1
Eu tentei o comando 'man complete', mas ele não exibe nada.
precisa saber é o seguinte
2
tente #help complete
Sylvain Pineau 04/04

Respostas:

16

completeé uma função interna do bash. Portanto, não há um binário no sistema. Ele lida com como os comandos serão concluídos ao pressionar tab.

Exemplo: se você digitar:

user@host:~$ pidof <tab><tab>

... uma lista está aparecendo com todos os valores possíveis para este comando. Nesse caso, significa todos os processos em execução. Veja a saída da completefunção:

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 que puder cdpara menos /usr/. Qual função é executada? greping a completefunção (como acima) nos diz que é o funtction _cdno /etc/bash_completion.

Faça você mesmo : você tem um programa / script chamado /bin/myproge deseja que, se o executar da seguinte maneira

user@host:~$ myprog /home/user/<tab><tab>

... deve listar apenas pastas, não arquivos. Portanto, estenda sua conclusão do bash com o seguinte comando:

user@host:~$ complete -F _cd myprog

É isso aí. Você também pode escrever funções próprias para concluir itens personalizados, por exemplo, concluir apenas arquivos ou números específicos ou listas de valores estáticos ...

caos
fonte
Então é assim que a conclusão da linha de comandos do git parece muito mais esperto do que a maioria programa de ...
AShelly
8

completeé um comando bash usado para executar a ação de preenchimento automático quando o usuário pressiona a TABtecla em um terminal.

A chamada apenas completelistará todas as funções registradas para o preenchimento automático de opções de comandos ou serviços.

Nas páginas do manual do bash:

complete: complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat]
          [-W wordlist]  [-F function] [-C command] [-X filterpat] [-P prefix]
          [-S suffix] [name ...]
    Specify how arguments are to be completed by Readline.

    For each NAME, specify how arguments are to be completed.  If no options
    are supplied, existing completion specifications are printed in a way that
    allows them to be reused as input.

    Options:
      -p    print existing completion specifications in a reusable format
      -r    remove a completion specification for each NAME, or, if no
        NAMEs are supplied, all completion specifications
      -D    apply the completions and actions as the default for commands
        without any specific completion defined
      -E    apply the completions and actions to "empty" commands --
        completion attempted on a blank line

    When completion is attempted, the actions are applied in the order the
    uppercase-letter options are listed above.  The -D option takes
    precedence over -E.

    Exit Status:
    Returns success unless an invalid option is supplied or an error occurs.

Verifique /usr/share/bash-completion/bash_completionpara ver as conclusões padrão que acompanham o bash.

Visite http://www.linuxjournal.com/content/more-using-bash-complete-command para obter um tutorial completo sobre esse comando.

Sylvain Pineau
fonte