diff options
Diffstat (limited to 'bash/bashrc.d/sudo.bash')
-rw-r--r-- | bash/bashrc.d/sudo.bash | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/bash/bashrc.d/sudo.bash b/bash/bashrc.d/sudo.bash index 41a97a9e..df2abcc1 100644 --- a/bash/bashrc.d/sudo.bash +++ b/bash/bashrc.d/sudo.bash @@ -7,3 +7,29 @@ sudo() { fi } +# Some imperfect but mostly-useful sudo(8) completion +_sudo() { + word=${COMP_WORDS[COMP_CWORD]} + prev=${COMP_WORDS[COMP_CWORD-1]} + + # Completion for this word depends on the previous word + case $prev in + + # If the previous word was an option for -g, complete with group names + -*g) + COMPREPLY=( $(compgen -A group -- "$word") ) + ;; + + # If the previous word was an option for -u, complete with user names + -*u) + COMPREPLY=( $(compgen -A user -- "$word") ) + ;; + + # Otherwise complete with commands + *) + COMPREPLY=( $(compgen -A command -- "$word") ) + ;; + esac +} +complete -F _sudo -o default sudo + |