diff options
-rw-r--r-- | bash/bashrc.d/sudo.bash | 26 | ||||
-rw-r--r-- | bash/bashrc.d/sudoedit.bash | 21 |
2 files changed, 47 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 + diff --git a/bash/bashrc.d/sudoedit.bash b/bash/bashrc.d/sudoedit.bash new file mode 100644 index 00000000..a13f484e --- /dev/null +++ b/bash/bashrc.d/sudoedit.bash @@ -0,0 +1,21 @@ +# Some imperfect but mostly-useful sudoedit(8) completion +_sudoedit() { + 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") ) + ;; + esac +} +complete -F _sudoedit -o default sudoedit + |