# bash completion for sudo(8) -*- shell-script -*- _sudo() { local cur prev words cword split _init_completion -s || return local i mode=normal [[ $1 == *sudoedit ]] && mode=edit [[ $mode == normal ]] && for (( i=1; i <= cword; i++ )); do if [[ ${words[i]} != -* ]]; then local PATH=$PATH:/sbin:/usr/sbin:/usr/local/sbin local root_command=${words[i]} _command_offset $i return fi if [[ ${words[i]} == -@(!(-*)e*|-edit) ]]; then mode=edit break fi [[ ${words[i]} == \ -@(user|other-user|group|close-from|prompt|!(-*)[uUgCp]) ]] \ && ((i++)) done case "$prev" in --user|--other-user|-!(-*)[uU]) COMPREPLY=( $(compgen -u -- "$cur") ) return ;; --group|-!(-*)g) COMPREPLY=( $(compgen -g -- "$cur") ) return ;; --close-from|--prompt|-!(-*)[Cp]) return ;; esac $split && return if [[ "$cur" == -* ]]; then local opts=$(_parse_help "$1") COMPREPLY=( $(compgen -W '${opts:-$(_parse_usage "$1")}' -- "$cur") ) [[ $COMPREPLY == *= ]] && compopt -o nospace return fi if [[ $mode == edit ]]; then _filedir fi } && complete -F _sudo sudo sudoedit # ex: filetype=sh