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

23

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

Por exemplo, se eu digitar apt-get e a guia duas vezes, só verei 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.

    
por Amged Rustom 11.08.2014 / 19:18

1 resposta

23

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

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

    
por 11.08.2014 / 19:26