Você pode usar a seguinte função, que usa da mesma maneira sudo
preenchimento automático para gerar a lista de conclusão:
comp() {
local COMP_LINE="$*"
local COMP_WORDS=("$@")
local COMP_CWORD=${#COMP_WORDS[@]}
((COMP_CWORD--))
local COMP_POINT=${#COMP_LINE}
local COMP_WORDBREAKS='"'"'><=;|&(:"
# Don't really thing any real autocompletion script will rely on
# the following 2 vars, but on principle they could ~~~ LOL.
local COMP_TYPE=9
local COMP_KEY=9
_command_offset 0
echo ${COMPREPLY[@]}
}
comp git config ''
onde _command_offset
é definido em bash-completion (package).
NOTA: a função precisa ser executada em um shell interativo (ou seja, se estiver em um arquivo, o arquivo precisa ser originado em vez de apenas executar.) ou as regras / funções de conclusão necessárias não serão definidas .
PS. compgen -A
só funciona para ações internas, o que você deve ter tentado (mas também não funciona) é compgen -F
(ou, na verdade, compgen -o bashdefault -o default -o nospace -F _git
). A razão pela qual isso não funciona (e o doc para comandos internos do bash, incluindo compgen / complete) pode ser encontrado em bash (1 ) .