_mount_module() { local cur prev OPTS COMPREPLY=() cur="${COMP_WORDS[COMP_CWORD]}" prev="${COMP_WORDS[COMP_CWORD-1]}" case $prev in '-t'|'--types') local prefix realcur TYPES TYPES=" $(\ls /lib/modules/$(uname -r)/kernel/fs | awk '{print $1, "no" $1}') $(awk '{print $NF, "no" $NF}' /proc/filesystems) " realcur="${cur##*,}" prefix="${cur%$realcur}" for WORD in $TYPES; do if ! [[ $prefix == *"$WORD"* ]]; then TYPE_COLS="$WORD ${TYPE_COLS:-""}" fi done compopt -o nospace COMPREPLY=( $(compgen -P "$prefix" -W "$TYPE_COLS" -S ',' -- $realcur) ) return 0 ;; '-L'|'--label') local LABELS LABELS="$(lsblk -o LABEL -nr)" COMPREPLY=( $(compgen -W "$LABELS" -- $cur) ) return 0 ;; '-U'|'--uuid') local UUIDS UUIDS="$(lsblk -o UUID -nr)" COMPREPLY=( $(compgen -W "$UUIDS" -- $cur) ) return 0 ;; '-N'|'--namespace') local NAMESPACE NAMESPACE="$(lsns --type mnt --output PATH --noheadings)" COMPREPLY=( $(compgen -W "$NAMESPACE" -- $cur) ) return 0 ;; '--options-mode') COMPREPLY=( $(compgen -W "ignore append prepend replace" -- $cur) ) return 0 ;; '--options-source') COMPREPLY=( $(compgen -W "fstab mtab disable" -- $cur) ) return 0 ;; '-h'|'--help'|'-V'|'--version') return 0 ;; esac case $cur in -*) OPTS=" --all --no-canonicalize --fake --fork --fstab --help --internal-only --show-labels --no-mtab --options --options-mode --options-source --options-source-force --test-opts --read-only --types --source --target --verbose --version --read-write --namespace --label --uuid --bind --move --rbind --make-shared --make-slave --make-private --make-unbindable --make-rshared --make-rslave --make-rprivate --make-runbindable --mkdir" COMPREPLY=( $(compgen -W "${OPTS[*]}" -- $cur) ) return 0 ;; esac local IFS=$'\n' compopt -o filenames COMPREPLY=( $(compgen -f -- $cur) ) return 0 } complete -F _mount_module mount