# bash completion for sudo(8) -*- shell-script -*- proc _sudo { local cur prev words cword _init_completion || return local i mode=normal [[ $1 == *sudoedit ]] && setglobal mode = 'edit' [[ $mode == normal ]] && for (( i=1; i <= COMP_CWORD; i++ )); do if [[ ${COMP_WORDS[i]} != -* ]]; then local PATH=$PATH:/sbin:/usr/sbin:/usr/local/sbin local root_command=${COMP_WORDS[i]} _command_offset $i return fi if [[ ${COMP_WORDS[i]} == -e ]]; then mode=edit break fi [[ ${COMP_WORDS[i]} == -[uUgCp] ]] && ((i++)) done match $prev { with -u|-U setglobal COMPREPLY = ''( $( compgen -u -- "$cur" ) ) return with -g setglobal COMPREPLY = ''( $( compgen -g -- "$cur" ) ) return with -C|-p # argument required but no completions available return } if [[ "$cur" == -* ]] { setglobal COMPREPLY = ''( $( compgen -W '-A -b -C -E -e -g -H -h -i -K -k -L -l -ll -n -P -p -S -s -U -u -V -v' -- "$cur" ) ) return } if [[ $mode == edit ]] { _filedir } } && complete -F _sudo sudo sudoedit # ex: ts=4 sw=4 et filetype=sh