2016-12-30 49 views
0

curl是我在命令行上经常使用的命令。当我使用ZSH时,我发现 - #选项不起作用;该选项工作在BASH罚款 - 看看下面的代码:我不知道什么哈希(#)在zsh中的含义

ZSH: 
→ curl --progress-bar www.google.com > google.html 
######################################################################## 100.0% 

→ curl -# www.google.com > google.html 
zsh: no matches found: -# 

BASH: 
$ curl --progress-bar www.google.com > google.html 
######################################################################## 100.0% 

$ curl -# www.google.com > google.html 
######################################################################## 100.0% 

当然,我可以定义一个别名来解决这个问题,如果我不想输入完整的选项名称(即 - 进度条)。但我只是好奇ZSH的哪个部分正在控制这种行为,以及是否有任何方式来在我的.zshrc文件中定制/重新定义此行为。非常感谢您提供任何有用的信息!

+1

行情。 '' - #''会打开任何类型的shell本地行为。 –

回答

4

zsh,如果.zshrc具有以下线,这是造成此问题对于curl

setopt extended_glob 

此选项意味着

“对待#,〜和^字符作为图案部分文件名生成等(一个初始的未加引号〜始终产生已命名的目录扩展。)“

,所以我认为应该使用--progress-bar而不是-#(或)将它包括在引号中,应该保留原来的字符,而不是使shell扩展它。

curl progress-bar option in GitHub发现它。

+0

谢谢!引用' - #'效果很好!并提供相关信息! – charlesqwu

+0

@charlesqwu:您可以点击我答案左侧的小勾,将其标记为已接受,以供将来参考。 – Inian

+1

另外,问题在于,默认情况下,'zsh'把一个不匹配任何东西的模式视为错误,而不是像'bash'那样将其视为一个文字字符串。使用'setopt nonomatch'会改变它。 – chepner

相关问题