# crontab(1) completion -*- shell-script -*- proc _crontab { var cur = '', prev = '', words = '', cword = '' _init_completion || return match $prev { with -u _allowed_users return 0 } var -A opts = '( '[-u]= [-l]= [-r]= [-e]= ) [[ $OSTYPE == *linux* ]] && setglobal opts[-i]= [[ -d /sys/fs/selinux || -d /selinux ]] && setglobal opts[-s]= var i = '' for (( i=0; i < ${#words[@]}-1; i++ )); do [[ ${words[i]} ]] && unset "opts[${words[i]}]" case "${words[i]}" in -l) unset 'opts[-r]' 'opts[-e]' 'opts[-i]' 'opts[-s]' ;; -e) unset 'opts[-l]' 'opts[-r]' 'opts[-i]' ;; -r) unset 'opts[-l]' 'opts[-e]' ;; -u) unset 'opts[-i]' ;; esac done if [[ "$cur" == -* ]] { setglobal COMPREPLY = '( '$( compgen -W '${!opts[@]}' -- "$cur" ) ) return 0 } # do filenames only if we did not have -l, -r, or -e [[ "${words[@]}" == *\ -[lre]* ]] || _filedir } && complete -F _crontab crontab # ex: ts=4 sw=4 et filetype=sh