Como o preenchimento automático do TAB encontra opções para concluir?


Respostas:


22

Dependendo do comando:

  • Alguém pode ter escrito uma função para gerar possíveis conclusões de argumentos, incluindo opções. Você encontrará funções para alguns comandos /etc/bash_completion.d/*(ou um local diferente em alguns sistemas). Essas funções são registradas com o built-in (por exemplo, informa ao bash para chamar a função quando você pressiona um comando). Eles usam o built-in para dizer ao bash "aqui estão as possíveis conclusões".complete complete -F _find find_findTabfindcompgen
  • Para alguns comandos, o bash chama o comando com o argumento --helpe analisa a saída. Tais comandos podem ser registrados com o completebuilt-in, por exemplo complete -F _longopt ls. _longopté de fato uma função de geração de conclusão, que analisa a saída de um comando em vez de usar uma lista fixa. (Existem outras funções de conclusão mais especializadas que analisam a saída de um comando para gerar possíveis conclusões; procure /etc/bash_completion.d/*exemplos.)
  • Para coisas como aliases, a função de conclusão as pesquisa nas tabelas internas do bash. O completebuilt-in tem opções para isso, por exemplo, -Apara aliases.

10

Dê uma olhada no arquivo

/ etc / bash_completion

e observe os arquivos do diretório:

/etc/bash_completion.d

Você encontrará a resposta.


2

O suporte para a conclusão do bash é fornecido no Debian e Ubuntu pelo pacote de conclusão do bash . Em geral, você também precisa descomentar o seguinte /etc/bash.bashrce / ou .bashrcobter os arquivos de conclusão do bash. O seguinte é de /etc/bash.bashrc:

# enable bash completion in interactive shells
if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
    . /etc/bash_completion
fi

para que isso funcione. Eu normalmente descomentei isso em ambos. O manuseio de shells interativos / de login no Debian é um pouco confuso.

Presumivelmente, comentários semelhantes se aplicam a outras distribuições, embora talvez elas habilitem o fornecimento por padrão.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.