Como o preenchimento automático de teclas encontra opções para concluir?

31

E como ele também complementa automaticamente os aliases?

    
por theTuxRacer 30.04.2011 / 10:51

3 respostas

20

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 em /etc/bash_completion.d/* (ou um local diferente em alguns sistemas). Essas funções são registradas com o complete built-in (por exemplo, complete -F _find find diz ao bash para chamar a função _find quando você pressione Tab em um comando find ). Eles usam o compgen embutido para informar ao bash “aqui são as possíveis conclusões ”.
  • Para alguns comandos, o bash chamará o comando com o argumento --help e analisará a saída. Esses comandos podem ser registrados com o complete embutido, por exemplo %código%. complete -F _longopt ls é, na verdade, uma função de geração de conclusão, que acontece para analisar a saída de um comando em vez de usar uma lista fixa. (Há outras funções de conclusão mais especializadas que analisam a saída de um comando para gerar possíveis conclusões; procure em _longopt por exemplos.)
  • Para coisas como aliases, a função de conclusão as procura nas tabelas internas do bash. O /etc/bash_completion.d/* integrado tem opções para isso, por exemplo complete para aliases.
por 30.04.2011 / 14:07
10

Dê uma olhada no arquivo

/etc/bash_completion

e observe os arquivos do diretório:

/etc/bash_completion.d

Você encontrará a resposta.

    
por 30.04.2011 / 10:58
2

O suporte para a conclusão do bash é fornecido no Debian e no Ubuntu pelo pacote de conclusão do bash . Você também geralmente precisa remover o comentário em /etc/bash.bashrc e / ou .bashrc para obter 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 isso funcionar. Eu costumo descomentar em ambos. O manuseio de shells interativos / de login no Debian é um pouco confuso.

Comentários semelhantes presumivelmente se aplicam a outras distribuições, embora talvez eles permitam o fornecimento por padrão.

    
por 30.04.2011 / 11:44