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 .