Escreva um script de conclusão bash para cooltool
. O pacote bash-completion vem com scripts para muitos programas populares, que você pode usar como exemplos.
Eu tenho meu utilitário de console personalizado cooltool
com lista de opções
fooOption
barOption
O que devo fazer para habilitar o bash a autocompletar as opções pressionando a tecla tab
?
Quero dizer, o usuário digitou
$ ./cooltool foo_
depois, pressionado tab
. E então
$ ./cooltool fooOption _
apareceu.
Escreva um script de conclusão bash para cooltool
. O pacote bash-completion vem com scripts para muitos programas populares, que você pode usar como exemplos.
A maneira mais simples é adicionar o seguinte ao seu .bashrc.
_cooltool()
{
local cur=${COMP_WORDS[COMP_CWORD]}
COMPREPLY=( $(compgen -W "fooOption barOption" -- $cur) )
}
complete -F _cooltool cooltool
Sempre que você digitar cooltool f[TAB][TAB]
, a função _cooltool()
será chamada. Ele irá descobrir qual é a sua palavra parcial atual e, em seguida, compgen
descobrirá quais opções correspondem. Estes são armazenados em uma matriz chamada COMPREPLY
, que é então exibida. Veja man complete
e man compgen
para detalhes.
Para um bom tutorial, confira: Escrevendo sua própria função de conclusão do bash
Você pode querer dar uma olhada mais de perto em seu diretório /etc/bash_completion.d em seu sistema.
Além disso, você deve ler esta introdução . A segunda parte da introdução é a que você precisa.
Além da resposta do dogbane, você também pode fazer:
complete -W "fooOption barOption" cooltool
se você quiser simplesmente corresponder uma lista de palavras do início da string. Parece que completo e compgen compartilham a maioria das opções. Eu só notei o "início da string" correspondente nos comandos que eu uso, então eu achei legal que você pudesse fazer outras coisas na função _cooltool como:
COMPREPLY=( $(grep "$cur" ~/my_potential_args.txt) )
para corresponder em qualquer lugar no nome da opção.
Tags bash