# 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?(.[gx]z))' else _modules $version fi } && complete -F _modinfo modinfo # ex: filetype=sh