A maioria dos programas no diretório de conclusão bash ( pkg-config --variable=completionsdir bash-completion
) usa a função _filedir
fornecida pelo próprio bash-completion. Parece legítimo reutilizar _filedir
- não precisa se preocupar com sua própria implementação!
MWE:
_testcommand()
{
# init bash-completion's stuff
_init_completion || return
# fill COMPREPLY using bash-completion's routine
# in this case, accept only MarkDown and C files
_filedir '@(md|c)'
}
complete -F _testcommand testcommand
É claro que você ainda pode usar isso ao concluir arquivos que não são:
if ...
then
# any custom extensions, e.g. words, numbers etc
COMPREPLY=( $(compgen ...) )
else
# fill COMPREPLY using bash-completion's routine
_filedir '@(md|c)'
fi
Como eu o encontrei?
Agradecemos a @csm : usando a resposta deles, confira type _longopt
, que chama _filedir
.