# bash completion for ifstat(1) -*- shell-script -*- _ifstat() { local cur prev words cword split _init_completion -s || return case $prev in --help | --version | --scan | --interval | -!(-*)[hvV]) return ;; -!(-*)i) # TODO comma separated _available_interfaces -a return ;; -!(-*)d) # iproute2: no completion (scan delay) # traditional: parse driver if ! { "$1" --help 2>&1 || : } | command grep -q -- '-d.*--scan'; then COMPREPLY=($(compgen -W '$("$1" -v | command \ sed -e "s/[,.]//g" -ne "s/^.*drivers://p")' -- "$cur")) fi return ;; --noupdate | -!(-*)s) # iproute2: pass through (skip history update) # traditional: hostnames (snmp) if ! { "$1" --help 2>&1 || : } | command grep -q -- '-s.*--noupdate'; then _known_hosts_real -- "$cur" return fi ;; -!(-*)t) # iproute2: no completion (interval) # traditional: pass through (add timestamp) ! { "$1" --help 2>&1 || : } | command grep -q -- '-t.*--interval' || return ;; --extended | -!(-*)x) # iproute2: parse xstat types COMPREPLY=($(compgen -W '$("$1" -x nonexistent-xstat 2>&1 | awk "found { print \$1 } /supported xstats:/ { found=1 }")' \ -- "$cur")) return ;; esac $split && return if [[ $cur == -* ]]; then local opts=$(_parse_help "$1") COMPREPLY=($(compgen -W '${opts:-$(_parse_usage "$1")}' -- "$cur")) [[ ${COMPREPLY-} == *= ]] && compopt -o nospace return fi } && complete -F _ifstat ifstat # ex: filetype=sh