# Linux modinfo(8) completion -*- shell-script -*- _modinfo() { local cur prev words cword split _init_completion -s || return case "$prev" in --field|-!(-*)F) COMPREPLY=( $(compgen -W 'alias author depends description filename firmware license parm srcversion staging vermagic version' -- "${cur,,}") ) return ;; --set-version|-!(-*)k) _kernel_versions 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 local i version=$(uname -r) for (( i=${#words[@]}-1; i>0; i-- )); do if [[ ${words[i]} == -@(!(-*)k*|-set-version) ]]; then version=${words[i+1]} break fi done # do filename completion if we're giving a path to a module if [[ "$cur" == @(*/|[.~])* ]]; then _filedir '@(?(k)o?(.gz))' else _modules $version fi } && complete -F _modinfo modinfo # ex: filetype=sh