Eu tenho meu utilitário de console personalizado cooltool
com lista de opções
fooOption
barOption
O que devo fazer para que o bash complete automaticamente as opções pressionando a tab
tecla?
Quero dizer, o usuário digitou
$ ./cooltool foo_
depois pressionado tab
. E depois
$ ./cooltool fooOption _
apareceu.
Respostas:
Escreva um script de conclusão do bash para
cooltool
. O pacote bash-complete vem com scripts para muitos programas populares, que você pode usar como exemplos.fonte
A maneira mais simples é adicionar o seguinte ao seu .bashrc.
Sempre que você digita
cooltool f[TAB][TAB]
, a_cooltool()
função é chamada. Ele descobrirá qual é a sua palavra parcial atual e, em seguidacompgen
, descobrirá quais opções correspondem. Eles são armazenados em uma matriz chamada,COMPREPLY
que é exibida. Vejaman complete
eman compgen
para detalhes.Para um bom tutorial, confira: Escrevendo sua própria função de conclusão de bash
fonte
Você pode dar uma olhada mais de perto no diretório /etc/bash_completion.d do seu sistema.
Você também deve ler esta introdução . A segunda parte da introdução é a que você precisa.
fonte
Aqui está o código usado para a conclusão do git bash
fonte
Além da resposta da dogbane, você também pode:
se você simplesmente deseja combinar uma lista de palavras desde o início da string. Parece que complete e compgen compartilham a maioria das opções. Eu só notei a correspondência "início da string" nos comandos que uso, então achei interessante que você pudesse fazer outras coisas na função _cooltool como:
para corresponder a qualquer lugar no nome da opção.
fonte