在我的zsh中,我定义了一个函数
a() { local x=*.proto; ls "$x"; }
当我在终端中点击a时,得到了
指定的路径'* .proto'不存在。
我的目录类似:
hello.proto
如何通过通配符匹配?
答案 0 :(得分:1)
使用数组,并使用printf()
在其中扩展全局结果。像nullglob
上的bash
一样,zsh
shell具有null_glob
选项,可在扩展失败时静默退出。所以把它们放在一起
a() {
# Turing on the option to prevent glob expansion failure
setopt null_glob
# Put the results to an array, so that a quoted expansion would keep the
# filename containing shell meta-characters intact
local x=(*.proto)
# Print the array if it is non-empty.
(( "${#a[@]}" )) && printf '%s\n' "${x[@]}"
}