- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
type="${(@j::M)${(@)tmp#-}#?}"
if (( $tmp[(I)-g*] )); then
glob="${${${${(@M)tmp:#-g*}#-g}##[[:blank:]]#}%%[[:blank:]]#}"
[[ "$glob" = *[^\\][[:blank:]]* ]] &&
glob="{${glob//(#b)([^\\])[[:blank:]]##/${match[1]},}}"
# add `#q' to the beginning of any glob qualifier if not there already
[[ "$glob" = (#b)(*\()([^\|\~]##\)) && $match[2] != \#q* ]] &&
glob="${match[1]}#q${match[2]}"
fi
zsh, избранное из _files: остальное чуть лучше.
Зато... хм, портабельно (в смысле между не оболочками, а платформами).