# crontab(1) completion -*- shell-script -*- _crontab() { local cur prev words cword _init_completion || return case $prev in -u) _allowed_users return 0 ;; esac local -A opts=( [-u]= [-l]= [-r]= [-e]= ) [[ $OSTYPE == *linux* ]] && opts[-i]= [[ -d /sys/fs/selinux || -d /selinux ]] && opts[-s]= local 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" == -* ]]; then COMPREPLY=( $( compgen -W '${!opts[@]}' -- "$cur" ) ) return 0 fi # 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