Aqui está uma maneira de fazer isso: definir dirnames
como a conclusão padrão e gerar conclusões personalizadas para o segundo argumento.
_some_func () {
case $COMP_CWORD in
1) :;; # let the default take over
2) COMPREPLY=($(compgen -W "go unbind" "${COMP_WORDS[$COMP_CWORD]}"));;
*) COMPREPLY=("");;
esac
}
complete -F _some_func -d some_func
Você também pode chamar compgen -d
quando $COMP_CWORD
é 1, mas isso não funciona bem no bash porque você precisa escapar do espaço em branco na saída de compgen
e não consegue distinguir uma nova linha que separa dois resultados de uma nova linha que está contida em uma conclusão (rara, mas possível).