_blockdev_module() { local cur prev OPTS COMPREPLY=() cur="${COMP_WORDS[COMP_CWORD]}" prev="${COMP_WORDS[COMP_CWORD-1]}" DEVS="$(lsblk -pnro name)" OPTS="-h -V -q --report --getsz --setro --setrw --getro --getdiscardzeroes --getss --getpbsz --getiomin --getioopt --getalignoff --getmaxsect --getbsz --setbsz --getsize64 --setra --getra --setfra --getfra --flushbufs --rereadpt $DEVS" case $prev in '--setbsz') COMPREPLY=( $(compgen -W "bytes" -- $cur) ) return 0 ;; '--setra'|'--setfra') COMPREPLY=( $(compgen -W "sectors" -- $cur) ) return 0 ;; esac compopt -o bashdefault -o default COMPREPLY=( $(compgen -W "${OPTS[*]}" -- $cur) ) return 0 } complete -F _blockdev_module blockdev