# 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