2013-03-23 17:41:32 +00:00
|
|
|
_findmnt_module()
|
|
|
|
{
|
|
|
|
local cur prev OPTS
|
|
|
|
COMPREPLY=()
|
|
|
|
cur="${COMP_WORDS[COMP_CWORD]}"
|
|
|
|
prev="${COMP_WORDS[COMP_CWORD-1]}"
|
|
|
|
case $prev in
|
|
|
|
'-p'|'--poll')
|
|
|
|
COMPREPLY=( $(compgen -W "=list" -- $cur) )
|
|
|
|
return 0
|
|
|
|
;;
|
|
|
|
'-w'|'--timeout')
|
|
|
|
COMPREPLY=( $(compgen -W "timeout" -- $cur) )
|
|
|
|
return 0
|
|
|
|
;;
|
|
|
|
'-d'|'--direction')
|
|
|
|
COMPREPLY=( $(compgen -W "forward backward" -- $cur) )
|
|
|
|
return 0
|
|
|
|
;;
|
|
|
|
'-F'|'--tab-file')
|
|
|
|
compopt -o filenames
|
|
|
|
COMPREPLY=( $(compgen -f -- $cur) )
|
|
|
|
return 0
|
|
|
|
;;
|
|
|
|
'-N'|'--task')
|
|
|
|
local TID='' I ARR
|
|
|
|
for I in /proc/*/mountinfo; do IFS=/ read -ra ARR <<< "$I"; TID+="${ARR[2]} "; done
|
|
|
|
COMPREPLY=( $(compgen -W "$TID" -- $cur) )
|
|
|
|
return 0
|
|
|
|
;;
|
|
|
|
'-O'|'--options')
|
|
|
|
local MTAB_3RD I
|
|
|
|
declare -a TMP_ARR
|
|
|
|
declare -A MNT_OPTS
|
|
|
|
while read MTAB_3RD; do
|
|
|
|
IFS=',' read -ra TMP_ARR <<<"$MTAB_3RD"
|
|
|
|
for I in ${TMP_ARR[@]}; do
|
|
|
|
MNT_OPTS[$I]='1'
|
|
|
|
done
|
|
|
|
done < <(findmnt -rno OPTIONS)
|
2013-04-07 11:12:05 +03:00
|
|
|
COMPREPLY=( $(compgen -W "${!MNT_OPTS[@]}" -- $cur) )
|
2013-03-23 17:41:32 +00:00
|
|
|
return 0
|
|
|
|
;;
|
|
|
|
'-o'|'--output')
|
|
|
|
# FIXME: how to append to a string with compgen?
|
|
|
|
local OUTPUT
|
|
|
|
OUTPUT="SOURCE TARGET FSTYPE OPTIONS VFS-OPTIONS
|
|
|
|
FS-OPTIONS LABEL UUID PARTLABEL PARTUUID
|
|
|
|
MAJ\:MIN ACTION OLD-TARGET OLD-OPTIONS
|
|
|
|
SIZE AVAIL USED USE% FSROOT TID ID
|
|
|
|
OPT-FIELDS PROPAGATION FREQ PASSNO"
|
|
|
|
compopt -o nospace
|
|
|
|
COMPREPLY=( $(compgen -W "$OUTPUT" -S ',' -- $cur) )
|
|
|
|
return 0
|
|
|
|
;;
|
|
|
|
'-t'|'--types')
|
|
|
|
local TYPES
|
|
|
|
TYPES="adfs affs autofs cifs coda coherent cramfs
|
|
|
|
debugfs devpts efs ext ext2 ext3 ext4 hfs
|
|
|
|
hfsplus hpfs iso9660 jfs minix msdos
|
|
|
|
ncpfs nfs nfs4 ntfs proc qnx4 ramfs
|
|
|
|
reiserfs romfs squashfs smbfs sysv tmpfs
|
|
|
|
ubifs udf ufs umsdos usbfs vfat xenix xfs
|
|
|
|
xiafs"
|
|
|
|
COMPREPLY=( $(compgen -W "$TYPES" -- $cur) )
|
|
|
|
return 0
|
|
|
|
;;
|
|
|
|
'-S'|'--source')
|
|
|
|
local DEV_MPOINT
|
|
|
|
DEV_MPOINT=$(findmnt -rno SOURCE | grep ^/dev)
|
|
|
|
COMPREPLY=( $(compgen -W "$DEV_MPOINT" -- $cur) )
|
|
|
|
return 0
|
|
|
|
;;
|
|
|
|
'-T'|'--target')
|
|
|
|
local DEV_MPOINT
|
|
|
|
DEV_MPOINT=$(findmnt -rno TARGET)
|
|
|
|
COMPREPLY=( $(compgen -W "$DEV_MPOINT" -- $cur) )
|
|
|
|
return 0
|
|
|
|
;;
|
2013-04-07 11:12:04 +03:00
|
|
|
'-h'|'--help'|'-V'|'--version')
|
|
|
|
return 0
|
|
|
|
;;
|
2013-03-23 17:41:32 +00:00
|
|
|
esac
|
|
|
|
case $cur in
|
|
|
|
-*)
|
|
|
|
OPTS="-s --fstab
|
|
|
|
-m --mtab
|
|
|
|
-k --kernel
|
|
|
|
-p --poll
|
|
|
|
-w --timeout
|
|
|
|
-A --all
|
|
|
|
-a --ascii
|
|
|
|
-c --canonicalize
|
|
|
|
-D --df
|
|
|
|
-d --direction
|
|
|
|
-e --evaluate
|
|
|
|
-F --tab-file
|
|
|
|
-f --first-only
|
|
|
|
-i --invert
|
|
|
|
-l --list
|
|
|
|
-N --task
|
|
|
|
-n --noheadings
|
|
|
|
-u --notruncate
|
|
|
|
-O --options
|
|
|
|
-o --output
|
|
|
|
-P --pairs
|
|
|
|
-r --raw
|
|
|
|
-t --types
|
|
|
|
-v --nofsroot
|
|
|
|
-R --submounts
|
|
|
|
-S --source
|
|
|
|
-T --target
|
|
|
|
-h --help
|
|
|
|
-V --version"
|
|
|
|
COMPREPLY=( $(compgen -W "${OPTS[*]}" -- $cur) )
|
|
|
|
return 0
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
local DEV_MPOINT
|
|
|
|
DEV_MPOINT=$(findmnt -rno TARGET,SOURCE)
|
|
|
|
COMPREPLY=( $(compgen -W "$DEV_MPOINT" -- $cur) )
|
|
|
|
return 0
|
|
|
|
}
|
|
|
|
complete -F _findmnt_module findmnt
|