diff options
Diffstat (limited to 'bash-completion/findmnt')
-rw-r--r-- | bash-completion/findmnt | 144 |
1 files changed, 144 insertions, 0 deletions
diff --git a/bash-completion/findmnt b/bash-completion/findmnt new file mode 100644 index 0000000..7270d36 --- /dev/null +++ b/bash-completion/findmnt @@ -0,0 +1,144 @@ +_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') + local IFS=$'\n' + 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 < <($1 -rno OPTIONS) + COMPREPLY=( $(compgen -W "${!MNT_OPTS[@]}" -- $cur) ) + return 0 + ;; + '-o'|'--output') + local prefix realcur OUTPUT_ALL OUTPUT + realcur="${cur##*,}" + prefix="${cur%$realcur}" + + OUTPUT_ALL="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" + + for WORD in $OUTPUT_ALL; do + if ! [[ $prefix == *"$WORD"* ]]; then + OUTPUT="$WORD ${OUTPUT:-""}" + fi + done + compopt -o nospace + COMPREPLY=( $(compgen -P "$prefix" -W "$OUTPUT" -S ',' -- $realcur) ) + return 0 + ;; + '-t'|'--types') + local TYPES + TYPES="adfs affs autofs cifs coda coherent cramfs + debugfs devpts efs 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" + COMPREPLY=( $(compgen -W "$TYPES" -- $cur) ) + return 0 + ;; + '-S'|'--source') + local DEV_MPOINT + DEV_MPOINT=$($1 -rno SOURCE | grep ^/dev) + COMPREPLY=( $(compgen -W "$DEV_MPOINT" -- $cur) ) + return 0 + ;; + '-T'|'--target') + local DEV_MPOINT + DEV_MPOINT=$($1 -rno TARGET) + COMPREPLY=( $(compgen -W "$DEV_MPOINT" -- $cur) ) + return 0 + ;; + '-M'|'--mountpoint') + local IFS=$'\n' + compopt -o filenames + COMPREPLY=( $(compgen -o dirnames -- ${cur:-"/"}) ) + return 0 + ;; + '-h'|'--help'|'-V'|'--version') + return 0 + ;; + esac + case $cur in + -*) + OPTS="--fstab + --mtab + --kernel + --poll + --timeout + --all + --ascii + --canonicalize + --df + --direction + --evaluate + --tab-file + --first-only + --invert + --json + --list + --task + --noheadings + --notruncate + --options + --output + --output-all + --pairs + --raw + --types + --nofsroot + --submounts + --source + --target + --mountpoint + --help + --tree + --real + --pseudo + --version" + COMPREPLY=( $(compgen -W "${OPTS[*]}" -- $cur) ) + return 0 + ;; + esac + local DEV_MPOINT + DEV_MPOINT=$($1 -rno TARGET,SOURCE) + COMPREPLY=( $(compgen -W "$DEV_MPOINT" -- $cur) ) + return 0 +} +complete -F _findmnt_module findmnt |