Re: [PATCH 05/10] bash-completion: misc-utils

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, Mar 27, 2013 at 10:07:47PM +0000, Sami Kerola wrote:
> Signed-off-by: Sami Kerola <kerolasa@xxxxxx>
> ---
>  shell-completion/blkid   |  62 ++++++++++++++++++++++++++
>  shell-completion/cal     |  15 +++++++
>  shell-completion/findmnt | 114 +++++++++++++++++++++++++++++++++++++++++++++++
>  shell-completion/getopt  |  34 ++++++++++++++
>  shell-completion/logger  |  43 ++++++++++++++++++
>  shell-completion/look    |  24 ++++++++++
>  shell-completion/lsblk   |  60 +++++++++++++++++++++++++
>  shell-completion/lslocks |  43 ++++++++++++++++++
>  shell-completion/mcookie |  23 ++++++++++
>  shell-completion/namei   |  17 +++++++
>  shell-completion/rename  |  27 +++++++++++
>  shell-completion/uuidd   |  33 ++++++++++++++
>  shell-completion/uuidgen |  15 +++++++
>  shell-completion/whereis |  24 ++++++++++
>  shell-completion/wipefs  |  38 ++++++++++++++++
>  15 files changed, 572 insertions(+)
>  create mode 100644 shell-completion/blkid
>  create mode 100644 shell-completion/cal
>  create mode 100644 shell-completion/findmnt
>  create mode 100644 shell-completion/getopt
>  create mode 100644 shell-completion/logger
>  create mode 100644 shell-completion/look
>  create mode 100644 shell-completion/lsblk
>  create mode 100644 shell-completion/lslocks
>  create mode 100644 shell-completion/mcookie
>  create mode 100644 shell-completion/namei
>  create mode 100644 shell-completion/rename
>  create mode 100644 shell-completion/uuidd
>  create mode 100644 shell-completion/uuidgen
>  create mode 100644 shell-completion/whereis
>  create mode 100644 shell-completion/wipefs
> 
> diff --git a/shell-completion/blkid b/shell-completion/blkid
> new file mode 100644
> index 0000000..dce41e0
> --- /dev/null
> +++ b/shell-completion/blkid
> @@ -0,0 +1,62 @@
> +_blkid_module()
> +{
> +	local cur prev OPTS
> +	COMPREPLY=()
> +	cur="${COMP_WORDS[COMP_CWORD]}"
> +	prev="${COMP_WORDS[COMP_CWORD-1]}"
> +	case $prev in
> +		'-c')
> +			compopt -o filenames
> +			COMPREPLY=( $(compgen -f -- $cur) )
> +			return 0
> +			;;
> +		'-o')
> +			COMPREPLY=( $(compgen -W "value device export full" -- $cur) )
> +			return 0
> +			;;
> +		'-s')
> +			COMPREPLY=( $(compgen -W "tag" -- $cur) )
> +			return 0
> +			;;
> +		'-t')
> +			COMPREPLY=( $(compgen -W "token" -- $cur) )
> +			return 0
> +			;;
> +		'-L')
> +			COMPREPLY=( $(compgen -W "$(\ls /dev/disk/by-label/ 2>/dev/null)" -- $cur) )
> +			return 0
> +			;;
> +		'-U')
> +			COMPREPLY=( $(compgen -W "$(\ls /dev/disk/by-uuid/ 2>/dev/null)" -- $cur) )
> +			return 0
> +			;;
> +		'-s')
> +			COMPREPLY=( $(compgen -W "size" -- $cur) )
> +			return 0
> +			;;
> +		'-O')
> +			COMPREPLY=( $(compgen -W "offset" -- $cur) )
> +			return 0
> +			;;
> +		'-u')
> +			COMPREPLY=( $(compgen -W "filesystem raid crypto other nofilesystem noraid nocrypto noother" -- $cur) )
> +			return 0
> +			;;
> +		'-n')
> +			COMPREPLY=( $(compgen -W "$(awk '{print $NF}' /proc/filesystems)" -- $cur) )
> +			return 0
> +			;;
> +	esac
> +	case $cur in
> +		-*)
> +			OPTS="-c -d -h -g -o -k -s -t -l -L -U -V -p -i -S -O -u -n"
> +			COMPREPLY=( $(compgen -W "${OPTS[*]}" -- $cur) )
> +			return 0
> +			;;
> +	esac
> +	local PARTITIONS
> +	PARTITIONS="$(for I in /sys/block/*/*/partition; do IFS='/'; DIR_ARR=($I); echo "/dev/${DIR_ARR[4]}"; done)"

You want the loop *outside* the assignment, rather than exploding the
contents into the array via echo:

  for part in /sys/block/*/*/partition; do
    IFS=/ read -ra a <<< "$part"
    partitions+=("${a[4]}")
  done

> +	COMPREPLY=( $(compgen -W "$PARTITIONS" -- $cur) )
> +	return 0
> +}
> +complete -F _blkid_module blkid
> diff --git a/shell-completion/cal b/shell-completion/cal
> new file mode 100644
> index 0000000..d50c8bb
> --- /dev/null
> +++ b/shell-completion/cal
> @@ -0,0 +1,15 @@
> +_cal_module()
> +{
> +	local cur OPTS
> +	COMPREPLY=()
> +	cur="${COMP_WORDS[COMP_CWORD]}"
> +	case $cur in
> +		-*)
> +			OPTS="-1 --one -3 --three -s --sunday -m --monday -j --julian -y --year -V --version -h --help"
> +			COMPREPLY=( $(compgen -W "${OPTS[*]}" -- $cur) )
> +			return 0
> +			;;
> +	esac
> +	return 0
> +}
> +complete -F _cal_module cal
> diff --git a/shell-completion/findmnt b/shell-completion/findmnt
> new file mode 100644
> index 0000000..5207b97
> --- /dev/null
> +++ b/shell-completion/findmnt
> @@ -0,0 +1,114 @@
> +_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
> +			TID="$(for I in /proc/*/mountinfo; do IFS='/'; TID=($I); echo "${TID[2]}"; done)"

Ditto here

> +			COMPREPLY=( $(compgen -W "$TID" -- $cur) )
> +			return 0
> +			;;
> +		'-O'|'--options')
> +			local MNT_OPTS
> +			MNT_OPTS=$(awk '{ n = split($4, a, ","); for (i = 0; i <= n; i++) { mnt_opts[a[i]]=1 } } END { for (i in mnt_opts) { print i } }' /etc/mtab 2>/dev/null )

I'm not sure you want to get into this game. You're including values
from key=val pairs (e.g. the 300 in timeout=300). Regardless, no awk
required here

  declare -A mnt_opts

  while read _ _ _ optstring _; do
    IFS=, read -ra opts <<< "$optstring"
    for opt in "${opts[@]}"; do
      mnt_opts["${opt%%=*}"]=1
    done
  done </etc/mtab

  opts=("${!mnt_opts[@]}")

> +			COMPREPLY=( $(compgen -W "$MNT_OPTS" -- $cur) )
> +			return 0
> +			;;
> +		'-o'|'--output')
> +			# FIXME: how to append to a string with compgen?

I've been down this road when I wrote some of the systemd completion. I
don't think you want to go there.

> +			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=$(awk '{ print $1 }' /etc/mtab 2>/dev/null)
> +			COMPREPLY=( $(compgen -W "$DEV_MPOINT" -- $cur) )
> +			return 0
> +			;;
> +		'-T'|'--target')
> +			local DEV_MPOINT
> +			DEV_MPOINT=$(awk '{ print $2 }' /etc/mtab 2>/dev/null)
> +			COMPREPLY=( $(compgen -W "$DEV_MPOINT" -- $cur) )
> +			return 0
> +			;;
> +	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=$(awk '{ print $1, $2 }' /etc/mtab 2>/dev/null)
> +	COMPREPLY=( $(compgen -W "$DEV_MPOINT" -- $cur) )
> +	return 0
> +}
> +complete -F _findmnt_module findmnt
> diff --git a/shell-completion/getopt b/shell-completion/getopt
> new file mode 100644
> index 0000000..ea8c8e2
> --- /dev/null
> +++ b/shell-completion/getopt
> @@ -0,0 +1,34 @@
> +_getopt_module()
> +{
> +	local cur prev OPTS
> +	COMPREPLY=()
> +	cur="${COMP_WORDS[COMP_CWORD]}"
> +	prev="${COMP_WORDS[COMP_CWORD-1]}"
> +	case $prev in
> +		'-l'|'--longoptions')
> +			COMPREPLY=( $(compgen -W "longopts" -- $cur) )
> +			return 0
> +			;;
> +		'-n'|'--name')
> +			COMPREPLY=( $(compgen -W "name" -- $cur) )
> +			return 0
> +			;;
> +		'-o'|'--options')
> +			COMPREPLY=( $(compgen -W "optstring" -- $cur) )
> +			return 0
> +			;;
> +		'-s'|'--shell')
> +			COMPREPLY=( $(compgen -W "sh bash csh tcsh" -- $cur) )
> +			return 0
> +			;;
> +	esac
> +	case $cur in
> +		-*)
> +			OPTS="-a --alternative -h --help -l --longoptions -n --name -o --options -q --quiet -Q --quiet-output -s --shell -T --test -u --unquote -V --version"
> +			COMPREPLY=( $(compgen -W "${OPTS[*]}" -- $cur) )
> +			return 0
> +			;;
> +	esac
> +	return 0
> +}
> +complete -F _getopt_module getopt
> diff --git a/shell-completion/logger b/shell-completion/logger
> new file mode 100644
> index 0000000..f572302
> --- /dev/null
> +++ b/shell-completion/logger
> @@ -0,0 +1,43 @@
> +_logger_module()
> +{
> +	local cur prev OPTS
> +	COMPREPLY=()
> +	cur="${COMP_WORDS[COMP_CWORD]}"
> +	prev="${COMP_WORDS[COMP_CWORD-1]}"
> +	case $prev in
> +		'-f'|'--file')
> +			compopt -o filenames
> +			COMPREPLY=( $(compgen -f -- $cur) )
> +			return 0
> +			;;
> +		'-n'|'--server')
> +			COMPREPLY=( $(compgen -A hostname -- $cur) )
> +			return 0
> +			;;
> +		'-P'|'--port')
> +			COMPREPLY=( $(compgen -W "$(awk '$1 ~ /^syslog$/  {split($2, a, "/"); print a[1]}' /etc/services)" -- $cur) )
> +			return 0
> +			;;
> +		'-p'|'--priority')
> +			COMPREPLY=( $(compgen -W "$(echo {auth,authpriv,cron,daemon,ftp,lpr,mail,news,security}.{alert,crit,debug,emerg,err,error})" -- $cur) )
> +			return 0
> +			;;
> +		'-t'|'--tag')
> +			COMPREPLY=( $(compgen -W "tag" -- $cur) )
> +			return 0
> +			;;
> +		'-u'|'--socket')
> +			COMPREPLY=( $(compgen -W "$(awk '$NF ~ /^\// {print $NF}' /proc/net/unix)" -- $cur) )
> +			return 0
> +			;;
> +	esac
> +	case $cur in
> +		-*)
> +			OPTS="-d --udp -i --id -f --file -h --help -n --server -P --port -p --priority -s --stderr -t --tag -u --socket -V --version"
> +			COMPREPLY=( $(compgen -W "${OPTS[*]}" -- $cur) )
> +			return 0
> +			;;
> +	esac
> +	return 0
> +}
> +complete -F _logger_module logger
> diff --git a/shell-completion/look b/shell-completion/look
> new file mode 100644
> index 0000000..68cea56
> --- /dev/null
> +++ b/shell-completion/look
> @@ -0,0 +1,24 @@
> +_look_module()
> +{
> +	local cur prev OPTS
> +	COMPREPLY=()
> +	cur="${COMP_WORDS[COMP_CWORD]}"
> +	prev="${COMP_WORDS[COMP_CWORD-1]}"
> +	case $prev in
> +		'-t'|'--terminate')
> +			COMPREPLY=( $(compgen -W "char" -- $cur) )
> +			return 0
> +			;;
> +	esac
> +	case $cur in
> +		-*)
> +			OPTS="-a --alternative -d --alphanum -f --ignore-case -t --terminate -V --version -h --help"
> +			COMPREPLY=( $(compgen -W "${OPTS[*]}" -- $cur) )
> +			return 0
> +			;;
> +	esac
> +	compopt -o filenames
> +	COMPREPLY=( $(compgen -f -- $cur) )
> +	return 0
> +}
> +complete -F _look_module look
> diff --git a/shell-completion/lsblk b/shell-completion/lsblk
> new file mode 100644
> index 0000000..521cead
> --- /dev/null
> +++ b/shell-completion/lsblk
> @@ -0,0 +1,60 @@
> +_lsblk_module()
> +{
> +	local cur prev OPTS MAJOR
> +	COMPREPLY=()
> +	cur="${COMP_WORDS[COMP_CWORD]}"
> +	prev="${COMP_WORDS[COMP_CWORD-1]}"
> +	case $prev in
> +		'-e'|'--exclude'|'-I'|'--include')
> +			MAJOR=$(\ls /sys/dev/block/ | sed 's/:.*//')
> +			# FIXME: how to append to a string with compgen?
> +			compopt -o nospace
> +			COMPREPLY=( $(compgen -W "$MAJOR" -S ',' -- $cur) )
> +			return 0
> +			;;
> +		'-o'|'--output')
> +			# FIXME: how to append to a string with compgen?
> +			OUTPUT="NAME KNAME MAJ:MIN FSTYPE MOUNTPOINT
> +				LABEL UUID PARTLABEL PARTUUID RA RO RM
> +				MODEL SIZE STATE OWNER GROUP MODE
> +				ALIGNMENT MIN-IO OPT-IO PHY-SEC LOG-SEC
> +				ROTA SCHED RQ-SIZE TYPE DISC-ALN
> +				DISC-GRAN DISC-MAX DISC-ZERO WSAME WWN
> +				RAND PKNAME HCTL TRAN REV VENDOR"
> +			compopt -o nospace
> +			COMPREPLY=( $(compgen -W "$OUTPUT" -S ',' -- $cur) )
> +			return 0
> +			;;
> +	esac
> +	case $cur in
> +		-*)
> +			OPTS="-a --all
> +				-b --bytes
> +				-d --nodeps
> +				-D --discard
> +				-e --exclude
> +				-I --include
> +				-f --fs
> +				-h --help
> +				-i --ascii
> +				-m --perms
> +				-l --list
> +				-n --noheadings
> +				-o --output
> +				-P --pairs
> +				-r --raw
> +				-s --inverse
> +				-t --topology
> +				-S --scsi
> +				-h --help
> +				-V --version"
> +			COMPREPLY=( $(compgen -W "${OPTS[*]}" -- $cur) )
> +			return 0
> +			;;
> +	esac
> +	local DEVS
> +	DEVS="$(\ls -d /sys/class/block/* | sed 's|/sys/class/block/|/dev/|g')"
> +	COMPREPLY=( $(compgen -W "$DEVS" -- $cur) )
> +	return 0
> +}
> +complete -F _lsblk_module lsblk
> diff --git a/shell-completion/lslocks b/shell-completion/lslocks
> new file mode 100644
> index 0000000..f55c17e
> --- /dev/null
> +++ b/shell-completion/lslocks
> @@ -0,0 +1,43 @@
> +_lslocks_module()
> +{
> +	local cur prev OPTS
> +	COMPREPLY=()
> +	cur="${COMP_WORDS[COMP_CWORD]}"
> +	prev="${COMP_WORDS[COMP_CWORD-1]}"
> +	case $prev in
> +		'-p'|'--pid')
> +			local PIDS
> +			# /proc/locks can have 8 to 9 fields, see commit
> +			# 55c0d16bab8cc84b72bf11cb2fdd8aa6205ac608
> +			PIDS="$(awk '{print $(NF-3)}' /proc/locks)"
> +			COMPREPLY=( $(compgen -W "$PIDS" -- $cur) )
> +			return 0
> +			;;
> +		'-o'|'--output')
> +			# FIXME: how to append to a string with compgen?
> +			local OUTPUT
> +			OUTPUT="COMMAND PID TYPE SIZE MODE M START END PATH BLOCKER"
> +			compopt -o nospace
> +			COMPREPLY=( $(compgen -W "$OUTPUT" -S ',' -- $cur) )
> +			return 0
> +			;;
> +
> +	esac
> +	case $cur in
> +		-*)
> +			OPTS="-p --pid
> +				-o --output
> +				-n --noheadings
> +				-r --raw
> +				-u --notruncate
> +				-h --help
> +				-V --version"
> +			COMPREPLY=( $(compgen -W "${OPTS[*]}" -- $cur) )
> +			return 0
> +			;;
> +	esac
> +	compopt -o filenames
> +	COMPREPLY=( $(compgen -f -- $cur) )
> +	return 0
> +}
> +complete -F _lslocks_module lslocks
> diff --git a/shell-completion/mcookie b/shell-completion/mcookie
> new file mode 100644
> index 0000000..1c01a55
> --- /dev/null
> +++ b/shell-completion/mcookie
> @@ -0,0 +1,23 @@
> +_mcookie_module()
> +{
> +	local cur prev OPTS
> +	COMPREPLY=()
> +	cur="${COMP_WORDS[COMP_CWORD]}"
> +	prev="${COMP_WORDS[COMP_CWORD-1]}"
> +	case $prev in
> +		'-f'|'--file')
> +			compopt -o filenames
> +			COMPREPLY=( $(compgen -f -- $cur) )
> +			return 0
> +			;;
> +	esac
> +	case $cur in
> +		-*)
> +			OPTS="-f --file -v --verbose -V --version -h --help"
> +			COMPREPLY=( $(compgen -W "${OPTS[*]}" -- $cur) )
> +			return 0
> +			;;
> +	esac
> +	return 0
> +}
> +complete -F _mcookie_module mcookie
> diff --git a/shell-completion/namei b/shell-completion/namei
> new file mode 100644
> index 0000000..c44821c
> --- /dev/null
> +++ b/shell-completion/namei
> @@ -0,0 +1,17 @@
> +_namei_module()
> +{
> +	local cur prev OPTS
> +	COMPREPLY=()
> +	cur="${COMP_WORDS[COMP_CWORD]}"
> +	case $cur in
> +		-*)
> +			OPTS="-h --help -V --version -x --mountpoints -m --modes -o --owners -l --long -n --nosymlinks -v --vertical"
> +			COMPREPLY=( $(compgen -W "${OPTS[*]}" -- $cur) )
> +			return 0
> +			;;
> +	esac
> +	compopt -o filenames
> +	COMPREPLY=( $(compgen -f -- $cur) )
> +	return 0
> +}
> +complete -F _namei_module namei
> diff --git a/shell-completion/rename b/shell-completion/rename
> new file mode 100644
> index 0000000..0fe4cc6
> --- /dev/null
> +++ b/shell-completion/rename
> @@ -0,0 +1,27 @@
> +_rename_module()
> +{
> +	local cur prev OPTS
> +	COMPREPLY=()
> +	cur="${COMP_WORDS[COMP_CWORD]}"
> +	case $cur in
> +		-*)
> +			OPTS="-v --verbose -s --symlink  -h --help -V --version"
> +			COMPREPLY=( $(compgen -W "${OPTS[*]}" -- $cur) )
> +			return 0
> +			;;
> +	esac
> +	case $COMP_CWORD in
> +		1)
> +			COMPREPLY=( $(compgen -W "expression" -- $cur) )
> +			;;
> +		2)
> +			COMPREPLY=( $(compgen -W "replacement" -- $cur) )
> +			;;
> +		*)
> +			compopt -o filenames
> +			COMPREPLY=( $(compgen -f -- $cur) )
> +			;;
> +	esac
> +	return 0
> +}
> +complete -F _rename_module rename
> diff --git a/shell-completion/uuidd b/shell-completion/uuidd
> new file mode 100644
> index 0000000..23c1a49
> --- /dev/null
> +++ b/shell-completion/uuidd
> @@ -0,0 +1,33 @@
> +_uuidd_module()
> +{
> +	local cur prev OPTS
> +	COMPREPLY=()
> +	cur="${COMP_WORDS[COMP_CWORD]}"
> +	prev="${COMP_WORDS[COMP_CWORD-1]}"
> +	case $prev in
> +		'-p'|'--pid'|'-s'|'--socket')
> +			compopt -o filenames
> +			COMPREPLY=( $(compgen -f -- $cur) )
> +			return 0
> +			;;
> +		'-T'|'--timeout')
> +			compopt -o filenames
> +			COMPREPLY=( $(compgen -W "timeout" -- $cur) )
> +			return 0
> +			;;
> +		'-n'|'--uuids')
> +			compopt -o filenames
> +			COMPREPLY=( $(compgen -W "number" -- $cur) )
> +			return 0
> +			;;
> +	esac
> +	case $cur in
> +		-*)
> +			OPTS="-p --pid -s --socket -T --timeout -k --kill -r --random -t --time -n --uuids -P --no-pid -F --no-fork -S --socket-activation -d --debug -q --quiet -V --version -h --help"
> +			COMPREPLY=( $(compgen -W "${OPTS[*]}" -- $cur) )
> +			return 0
> +			;;
> +	esac
> +	return 0
> +}
> +complete -F _uuidd_module uuidd
> diff --git a/shell-completion/uuidgen b/shell-completion/uuidgen
> new file mode 100644
> index 0000000..d9edde9
> --- /dev/null
> +++ b/shell-completion/uuidgen
> @@ -0,0 +1,15 @@
> +_uuidgen_module()
> +{
> +	local cur OPTS
> +	COMPREPLY=()
> +	cur="${COMP_WORDS[COMP_CWORD]}"
> +	case $cur in
> +		-*)
> +			OPTS="-r --random -t --time -V --version -h --help"
> +			COMPREPLY=( $(compgen -W "${OPTS[*]}" -- $cur) )
> +			return 0
> +			;;
> +	esac
> +	return 0
> +}
> +complete -F _uuidgen_module uuidgen
> diff --git a/shell-completion/whereis b/shell-completion/whereis
> new file mode 100644
> index 0000000..96e4117
> --- /dev/null
> +++ b/shell-completion/whereis
> @@ -0,0 +1,24 @@
> +_whereis_module()
> +{
> +	local cur prev OPTS
> +	COMPREPLY=()
> +	cur="${COMP_WORDS[COMP_CWORD]}"
> +	prev="${COMP_WORDS[COMP_CWORD-1]}"
> +	case $prev in
> +		'-B'|'-M'|'-S')
> +			compopt -o filenames
> +			COMPREPLY=( $(compgen -o dirnames -- ${cur:-"/"}) )
> +			return 0
> +			;;
> +	esac
> +	case $cur in
> +		-*)
> +			OPTS="-b -B -m -M -s -S -f -u -l"
> +			COMPREPLY=( $(compgen -W "${OPTS[*]}" -- $cur) )
> +			return 0
> +			;;
> +	esac
> +	COMPREPLY=( $(compgen -W "file" -- $cur) )
> +	return 0
> +}
> +complete -F _whereis_module whereis
> diff --git a/shell-completion/wipefs b/shell-completion/wipefs
> new file mode 100644
> index 0000000..427f47b
> --- /dev/null
> +++ b/shell-completion/wipefs
> @@ -0,0 +1,38 @@
> +_wipefs_module()
> +{
> +	local cur prev OPTS
> +	COMPREPLY=()
> +	cur="${COMP_WORDS[COMP_CWORD]}"
> +	prev="${COMP_WORDS[COMP_CWORD-1]}"
> +	case $prev in
> +		'-o'|'--offset')
> +			COMPREPLY=( $(compgen -W "offset" -- $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
> +			;;
> +
> +	esac
> +	case $cur in
> +		-*)
> +			OPTS="-a --all -f --force -h --help -n --no-actn -o --offset -p --parsable -q --quiet -t --types -V --version"
> +			COMPREPLY=( $(compgen -W "${OPTS[*]}" -- $cur) )
> +			return 0
> +			;;
> +	esac
> +	local DEVS
> +	DEVS="$(\ls -d /sys/class/block/* | sed 's|/sys/class/block/|/dev/|g')"
> +	COMPREPLY=( $(compgen -W "$DEVS" -- $cur) )
> +	return 0
> +}
> +complete -F _wipefs_module wipefs
> -- 
> 1.8.2
> 
> --
> To unsubscribe from this list: send the line "unsubscribe util-linux" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe util-linux" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Netdev]     [Ethernet Bridging]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Admin]     [Samba]

  Powered by Linux