_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 | |
;; | |
'-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 | |
--test-opts | |
--read-only | |
--types | |
--source | |
--target | |
--verbose | |
--version | |
--read-write | |
--label | |
--uuid | |
--bind | |
--move | |
--rbind | |
--make-shared | |
--make-slave | |
--make-private | |
--make-unbindable | |
--make-rshared | |
--make-rslave | |
--make-rprivate | |
--make-runbindable" | |
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 |