bash não tem uma função para fazer exatamente isso. As conclusões programáveis dependem muito de vários parâmetros, como a posição do cursor ...
eval $(complete -p 'git' | sed s/^complete/compgen/)
parece funcionar, mas é muito frágil.
Existe uma boa maneira de imprimir (por exemplo, stdout) uma lista de todas as conclusões possíveis de um comando no bash (as que ele me daria se eu digitasse o comando e pressionasse a guia)?
Edit: Eu acho que isso não estava muito claro, agora que eu li novamente. Eu sei como obter conclusões manualmente. Eu quero fazer isso de forma programática.
bash não tem uma função para fazer exatamente isso. As conclusões programáveis dependem muito de vários parâmetros, como a posição do cursor ...
eval $(complete -p 'git' | sed s/^complete/compgen/)
parece funcionar, mas é muito frágil.
Pressione TAB duas vezes. A maioria dos shells semelhantes a BASH listará todas as opções de preenchimento automático correspondentes para uma determinada substring.
por exemplo,
root@host$apt-get up
pressionando TAB duas vezes neste comando irá listar ambos Update
e Upgrade
Verifique se você tem o pacote bash-completion
instalado. Dependendo do seu tipo de instalação, ele pode ou não ser incluído por padrão, se não apenas pegar com yum
ou apt
. Após a instalação, você precisará efetuar logout e login novamente ou reutilizar seu .bashrc
para usá-lo.
@Amazed está no local sobre como usá-lo.
Não realmente ... lembre-se de que as conclusões podem ser uma função e podem depender de argumentos anteriores.
Dito isso, complete | grep ...
pode te levar a algum lugar
Acho que o que você está pedindo é basicamente uma lista de todos os comandos que começam com uma determinada string. Você deve ser capaz de fazer isso obtendo uma lista de todos os executáveis em seu sistema e executando-os através do grep.
Tags bash