Eu segui este tutorial para escrever minha função de conclusão do bash . Funcionou muito bem, mas eu queria saber se é possível mostrar conclusões de diferentes fontes separadamente.
Por exemplo, suponha que eu tenha um script que tenha um diretório como argumento e eu queira completar automaticamente os possíveis diretórios (listados por get_dirs
):
function _testing_command()
{
local cur=${COMP_WORDS[COMP_CWORD]}
local prev=${COMP_WORDS[COMP_CWORD-1]}
case "$prev" in
testing )
COMPREPLY=( $(compgen -W "$(get_dirs)" -- $cur) )
;;
esac
}
complete -F _testing_command testing
Isso funciona bem e autocompleta os diretórios corretamente:
$ testing <TAB><TAB>
dir1 dir3 dir5
$ testing
No entanto, e se eu agora tiver um segundo conjunto de diretórios (listados por get_dirs_2
) que desejo incluir na saída de preenchimento automático. Eu posso fazer o seguinte:
function _testing_command()
{
local cur=${COMP_WORDS[COMP_CWORD]}
local prev=${COMP_WORDS[COMP_CWORD-1]}
case "$prev" in
testing )
COMPREPLY=( $(compgen -W "$(get_dirs) $(get_dirs_2)" -- $cur) )
;;
esac
}
complete -F _testing_command testing
Qual será o resultado:
$ testing <TAB><TAB>
dir1 dir2 dir3 dir4 dir5 dir6
$ testing
Tecnicamente, tudo bem, porque o preenchimento automático funcionará nos diretórios das duas origens. Mas eu quero que a saída de alguma forma signifique qual diretório vem de qual local, por exemplo:
$ testing <TAB><TAB>
from loc1:
dir1 dir3 dir5
from loc2:
dir2 dir4 dir6
$ testing
Tenho algum controle sobre o formato de saída? Ou simplesmente não é possível conseguir algo assim com as funções completas / compgen?
Tags bash autocomplete