]> git.ipfire.org Git - thirdparty/util-linux.git/blob - bash-completion/lsblk
rev: be careful with close()
[thirdparty/util-linux.git] / bash-completion / lsblk
1 _lsblk_module()
2 {
3 local cur prev OPTS LSBLK_COLS_ALL
4 COMPREPLY=()
5 cur="${COMP_WORDS[COMP_CWORD]}"
6 prev="${COMP_WORDS[COMP_CWORD-1]}"
7
8 LSBLK_COLS_ALL="
9 NAME KNAME MAJ:MIN FSTYPE MOUNTPOINT LABEL UUID PARTTYPE
10 PARTLABEL PARTUUID PARTFLAGS RA RO RM HOTPLUG MODEL SERIAL SIZE
11 STATE OWNER GROUP MODE ALIGNMENT MIN-IO OPT-IO PHY-SEC LOG-SEC
12 ROTA SCHED RQ-SIZE TYPE DISC-ALN DISC-GRAN DISC-MAX DISC-ZERO
13 WSAME WWN RAND PKNAME HCTL TRAN SUBSYSTEMS REV VENDOR
14 "
15
16 case $prev in
17 '-e'|'--exclude'|'-I'|'--include')
18 local realcur prefix MAJOR_ALL MAJOR I J
19 realcur="${cur##*,}"
20 prefix="${cur%$realcur}"
21 for I in /sys/dev/block/*; do
22 J=${I##*/}
23 MAJOR_ALL="${MAJOR_ALL:-""} ${J%%:*}"
24 done
25 for WORD in ${MAJOR_ALL:-""}; do
26 if ! [[ $prefix == *"$WORD"* ]]; then
27 MAJOR="$WORD ${MAJOR:-""}"
28 fi
29 done
30 compopt -o nospace
31 COMPREPLY=( $(compgen -P "$prefix" -W "${MAJOR:-""}" -S ',' -- $realcur) )
32 return 0
33 ;;
34 '-o'|'--output'|'-M'|'--dedup')
35 local prefix realcur LSBLK_COLS
36 realcur="${cur##*,}"
37 prefix="${cur%$realcur}"
38 for WORD in $LSBLK_COLS_ALL; do
39 if ! [[ $prefix == *"$WORD"* ]]; then
40 LSBLK_COLS="$WORD ${LSBLK_COLS:-""}"
41 fi
42 done
43 compopt -o nospace
44 COMPREPLY=( $(compgen -P "$prefix" -W "$LSBLK_COLS" -S ',' -- $realcur) )
45 return 0
46 ;;
47 '-x'|'--sort')
48 compopt -o nospace
49 COMPREPLY=( $(compgen -W "$LSBLK_COLS_ALL" -- $cur) )
50 return 0
51 ;;
52 '-h'|'--help'|'-V'|'--version')
53 return 0
54 ;;
55 esac
56 case $cur in
57 -*)
58 OPTS="--all
59 --bytes
60 --nodeps
61 --discard
62 --exclude
63 --fs
64 --help
65 --include
66 --json
67 --ascii
68 --list
69 --dedup
70 --merge
71 --perms
72 --noheadings
73 --output
74 --output-all
75 --paths
76 --pairs
77 --raw
78 --inverse
79 --topology
80 --scsi
81 --sort
82 --help
83 --version"
84 COMPREPLY=( $(compgen -W "${OPTS[*]}" -- $cur) )
85 return 0
86 ;;
87 esac
88 COMPREPLY=( $(compgen -W "$($1 -pnro name)" -- $cur) )
89 return 0
90 }
91 complete -F _lsblk_module lsblk