This way it's clearer to users that an argument is expected. It's likely that this commit does not catch all such cases, but it should do it for most of the affected commands I have installed.
50 lines
1.2 KiB
Bash
50 lines
1.2 KiB
Bash
# bash completion for gzip
|
|
|
|
have gzip || have pigz || return
|
|
|
|
_gzip()
|
|
{
|
|
local cur prev words cword
|
|
_init_completion || return
|
|
|
|
case $prev in
|
|
-b|--blocksize|-p|--processes|-S|--suffix|-h|--help|-V|--version)
|
|
return 0
|
|
;;
|
|
esac
|
|
|
|
if [[ "$cur" == -* ]]; then
|
|
COMPREPLY=( $( compgen -W '$( _parse_help "$1" ) {-1..-9}' \
|
|
-- "$cur" ) )
|
|
[[ $COMPREPLY == *= ]] && compopt -o nospace
|
|
return 0
|
|
fi
|
|
|
|
local IFS=$'\n' xspec="*.@(gz|t[ag]z)"
|
|
|
|
if [[ "$prev" == --* ]]; then
|
|
[[ "$prev" == --decompress || \
|
|
"$prev" == --list || \
|
|
"$prev" == --test ]] && xspec="!"$xspec
|
|
[[ "$prev" == --force ]] && xspec=
|
|
elif [[ "$prev" == -* ]]; then
|
|
[[ "$prev" == -*[dlt]* ]] && xspec="!"$xspec
|
|
[[ "$prev" == -*f* ]] && xspec=
|
|
fi
|
|
|
|
_expand || return 0
|
|
|
|
compopt -o filenames
|
|
COMPREPLY=( $( compgen -f -X "$xspec" -- "$cur" ) \
|
|
$( compgen -d -- "$cur" ) )
|
|
} &&
|
|
complete -F _gzip gzip pigz
|
|
|
|
# Local variables:
|
|
# mode: shell-script
|
|
# sh-basic-offset: 4
|
|
# sh-indent-comment: t
|
|
# indent-tabs-mode: nil
|
|
# End:
|
|
# ex: ts=4 sw=4 et filetype=sh
|