# crontab(1) completion -*- shell-script -*- _crontab() { local cur prev words cword _init_completion || return case $prev in -*u) _allowed_users return ;; esac local -A opts=([-u]="" [-l]="" [-r]="" [-e]="") [[ $OSTYPE == *linux* ]] && opts[-i]= [[ -d /sys/fs/selinux || -d /selinux ]] && opts[-s]= local i for i in "${!words[@]}"; do [[ ${words[i]} && $i -ne $cword ]] && 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 fi # do filenames only if we did not have -l, -r, or -e [[ ${words[*]} == *\ -[lre]* ]] || _filedir } && complete -F _crontab crontab # ex: filetype=sh