在bash中,我们可以说
dnf install <some-pkg>-*
或
rm -rf *.jpg
但是当我使用zsh时,它对星号(*)没有任何作用! 我该如何在zsh上执行这些命令?!
答案 0 :(得分:1)
这是glob的两种不同用法。对于dnf
,您期望dnf
本身可以针对可用软件包扩展模式。使用rm
,您期望 shell 可以针对当前目录中的文件扩展模式,并将结果名称传递给rm
。
在bash
中,默认行为是将不匹配任何内容的模式视为文字字符串。这就是dnf
示例在bash
中起作用的原因:当没有与<some-pkg>-*
匹配的本地文件时,文字字符串将传递到zsh
。
解决方案是引用要原义处理的字符串,而不是依靠shell对不匹配模式的处理。以下内容将在两个shell中正常工作:
dnf install "<some-pkg>.*"
rm -rf *.jpg
在两个shell中,您都可以更改对待不匹配模式的方式。要使zsh
像bash
的默认行为,请使用
setopt NO_NOMATCH
要使bash
的行为类似于zsh
的默认设置,可以使用
shopt -s failglob
答案 1 :(得分:0)
可能在您的zsh上禁用了globing。在zsh中使用以下命令启用它:
setopt GLOB