Resposta rápida:
- Instale
bash-completion
- Fonte
bash_completion
emBash
startup - Adicione seu compspec em
Bash
startup - Não sobrescreva
sudo
compspec comcomplete -cf sudo
Suponho que você use MacOSX
com brew
.
Tente:
brew update
brew install bash-completion
brew info bash-completion
# bash-completion: stable 1.3
. $(brew --prefix)/etc/bash_completion
complete -p sudo
Você deve ver algo assim:
complete -F _root_command sudo
Teste:
function _comp_foo() { COMPREPLY=($(compgen -W 'a b c' -- "$2")); }
complete -F _comp_foo foo
Digite foo
Espaço Guia Guia
Você deve ver a b c
Digite sudo foo
Espaço Guia Guia
Você deve ver a b c
Em seguida, remova complete -fc sudo
dos seus arquivos de inicialização ( ~/.bash_profile
, ~/.bashrc
etc)
Adicione as seguintes linhas aos seus arquivos de inicialização:
if [ -f $(brew --prefix)/etc/bash_completion ]; then
. $(brew --prefix)/etc/bash_completion
fi
# Your compspec here
complete -o default -o nospace -W "$(sudo ls -1 /var/cache/salt/master/minions)" salt
Reabra o terminal.
Digite complete -p sudo
.
Você deve ver complete -F _root_command sudo
.
Digite complete -p salt
.
Você deveria ver algo assim:
complete -o default -o nospace -W 'a
b
c' salt
bash-completion2. * note :
Você pode instalar o bash-completion2
: link
Mas:
-
2.*
funciona comBash 4.*
-
2.*
usa a opção-D
para o carregamento lento de compspecs. Então,complete -p sudo
outputscomplete: sudo: no completion specification
até que você digitesudo
Espaço Tab