如何选择zsh中的所有项目?

时间:2019-05-03 09:32:27

标签: bash zsh

在bash中,我们可以说

dnf install <some-pkg>-*

rm -rf *.jpg

但是当我使用zsh时,它对星号(*)没有任何作用! 我该如何在zsh上执行这些命令?!

2 个答案:

答案 0 :(得分:1)

这是glob的两种不同用法。对于dnf,您期望dnf本身可以针对可用软件包扩展模式。使用rm,您期望 shell 可以针对当前目录中的文件扩展模式,并将结果名称传递给rm

bash中,默认行为是将不匹配任何内容的模式视为文字字符串。这就是dnf示例在bash中起作用的原因:当没有与<some-pkg>-*匹配的本地文件时,文字字符串将传递到zsh

解决方案是引用要原义处理的字符串,而不是依靠shell对不匹配模式的处理。以下内容将在两个shell中正常工作:

dnf install "<some-pkg>.*"
rm -rf *.jpg

在两个shell中,您都可以更改对待不匹配模式的方式。要使zshbash的默认行为,请使用

setopt NO_NOMATCH

要使bash的行为类似于zsh的默认设置,可以使用

shopt -s failglob

答案 1 :(得分:0)

可能在您的zsh上禁用了globing。在zsh中使用以下命令启用它:

setopt GLOB