# POSIX sh(1) completion -*- shell-script -*- proc _sh { var cur = '', prev = '', words = '', cword = '' _init_completion || return match $prev { with -c return 0 with -o|+o setglobal COMPREPLY = '( '$( compgen -W 'allexport errexit ignoreeof monitor noclobber noglob noexec nolog notify nounset verbose vi xtrace' -- "$cur" ) ) return 0 } var opts = '"-a -b -C -e -f -h -i -m -n -o -u -v -x'" if [[ "$cur" == -* ]] { setglobal COMPREPLY = '( '$( compgen -W "$opts -c -s" -- "$cur" ) ) return 0 } elif [[ "$cur" == +* ]] { setglobal COMPREPLY = '( '$( compgen -W "${opts//-/+}" -- "$cur" ) ) return 0 } var args = '', ext = '' _count_args [[ $args -eq 1 ]] && set ext = 'sh' _filedir $ext } && complete -F _sh sh # ex: ts=4 sw=4 et filetype=sh