_prlimit_module() { local cur prev OPTS COMPREPLY=() cur="${COMP_WORDS[COMP_CWORD]}" prev="${COMP_WORDS[COMP_CWORD-1]}" case $prev in '-p'|'--pid') PIDS=$(for I in /proc/[0-9]*; do echo ${I##"/proc/"}; done) COMPREPLY=( $(compgen -W "$PIDS" -- $cur) ) return 0 ;; '-o'|'--output') # FIXME: how to append to a string with compgen? local OUTPUT OUTPUT="DESCRIPTION RESOURCE SOFT HARD UNITS" compopt -o nospace COMPREPLY=( $(compgen -W "$OUTPUT" -S ',' -- $cur) ) return 0 ;; '-h'|'--help'|'-V'|'--version') return 0 ;; esac case $cur in '=') cur=${cur#=} # FIXME: is there anything what could be printed # as limit value(s) ;; -*) OPTS="--pid --output --noheadings --raw --verbose --help --version --core= --data= --nice= --fsize= --sigpending= --memlock= --rss= --nofile= --msgqueue= --rtprio= --stack= --cpu= --nproc= --as= --locks= --rttime=" COMPREPLY=( $(compgen -W "${OPTS[*]}" -- $cur) ) return 0 ;; esac compopt -o bashdefault COMPREPLY=( $(compgen -c -- $cur) ) return 0 } complete -F _prlimit_module prlimit