Como as ferramentas de linha de comando têm sua própria lista de preenchimento automático?


24

Como o Bash no Ubuntu conhece a lista específica de ações de uma ferramenta?

Por exemplo, se eu digitar apt-get e tab duas vezes, vejo apenas remover, atualizar, atualizar ... etc, mas não as ações de outro comando ou os arquivos no diretório atual.

Estou desenvolvendo uma ferramenta de linha de comando no Go e gostaria de fornecer esse recurso para as distribuições que o suportam.


11
Eu removi o "ubuntu" do seu título e tags, pois isso é melhor como uma pergunta mais geral (a resposta não é específica para nenhuma distribuição).
Goldilocks

11
Ótima pergunta, eu sempre me perguntei isso, mas nunca tirei um tempo para procurar.
Akatakritos

Respostas:


25

Faz isso usando os recursos de conclusão do bash v4. O código de conclusão para apt-geté fornecido pelo bash-completionpacote e localizado em /usr/share/bash-completion/completions/apt-get. Os aplicativos que têm conclusão e não fazem parte do bash-completionpacote base inserem seus scripts de conclusão /etc/bash_completion.d.

As conclusões são carregadas via sourcing /etc/bash_completion. Exatamente onde isso é feito irá variar dependendo das versões do Debian ou Ubuntu. Isso, por sua vez, fornecerá tudo em /usr/share/bash-completion/completionse /etc/bash_completion.d.


Obrigado, isso explica. Então a implementação não varia apenas do Debian para o Ubuntu, mas também em cada versão da mesma distribuição?
Alterado Rustom

11
@Amgad Funciona da mesma maneira em todas as distribuições. As únicas diferenças são onde os arquivos estão localizados e talvez algumas configurações padrão.
Gilles 'SO- stop being evil' (
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.