# Linux modinfo(8) completion -*- shell-script -*- proc _modinfo { local cur prev words cword _init_completion || return match $prev { with -F|--field setglobal COMPREPLY = ''( $( compgen -W 'alias author depends description filename firmware license parm srcversion staging vermagic version' -- "${cur,,}" ) ) return with -k _kernel_versions return } if [[ "$cur" == -* ]] { setglobal COMPREPLY = ''( $( compgen -W '-V --version -F --field -k -0 --null -a -d -l -p -n' -- "$cur" ) ) return } local i version=$[uname -r] for (( i=${#words[@]}-1; i>0; i-- )); do if [[ ${words[i]} == -k ]]; then version=${words[i+1]} break fi done # do filename completion if we're giving a path to a module if [[ "$cur" == @(*/|[.~])* ]] { _filedir '@(?(k)o?(.gz))' } else { _modules $version } } && complete -F _modinfo modinfo # ex: ts=4 sw=4 et filetype=sh