无法获取手册的系统变量
我在 .zshrc 中有以下系统变量,
manuals='/usr/share/man/man<1-9>'
我运行失败,
zgrep -c compinit $manuals/zsh*
我得到
zsh: no matches found: /usr/share/man/man<1-9>/zsh*
命令应该与以下有效命令相同
zgrep -c compinit /usr/share/man/man<1-9>/zsh*
如何在 Zsh 中使用系统变量运行上述命令?
I have the following system variable in .zshrc
manuals='/usr/share/man/man<1-9>'
I run unsuccessfully
zgrep -c compinit $manuals/zsh*
I get
zsh: no matches found: /usr/share/man/man<1-9>/zsh*
The command should be the same as the following command which works
zgrep -c compinit /usr/share/man/man<1-9>/zsh*
How can you run the above command with a system variable in Zsh?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
尝试:
“~”告诉 zsh 在使用变量时执行
<0-9>
的扩展。 zsh 参考卡告诉您如何执行此操作以及更多操作。Try:
The '~' tells zsh to perform expansion of the
<0-9>
when using the variable. The zsh reference card tells you how to do this and more.根据我的调查,zsh 似乎在
<>
替换之前$
替换执行。 这意味着当您使用$
变体时,它首先尝试<>
替换(那里什么也没有),然后尝试$
替换(有效),剩下的就是包含<>
字符的字符串。当您不使用
$manuals
时,它首先尝试<>
替换并且有效。 这是一个秩序问题。 下面的最终版本展示了如何推迟扩展,以便它们同时发生:这些可以在这里看到:
From my investigations, it looks like zsh performs
<>
substitution before$
substitution. That means when you use the$
variant, it first tries<>
substitution (nothing there) then$
substitution (which works), and you're left with the string containing the<>
characters.When you don't use
$manuals
, it first tries<>
substitution and it works. It's a matter of order. The final version below shows how to defer expansion so they happen at the same time:These can be seen here: