我不知道 zsh 中的哈希 (#) 是什么意思

cha*_*qwu 0 zsh

curl 是我在命令行中经常使用的命令。当我使用 ZSH 时,我发现 -# 选项不起作用;该选项在 BASH 中工作正常——见下面的代码:

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%
Run Code Online (Sandbox Code Playgroud)

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

Ini*_*ian 5

zsh,如果.zshrc有以下行导致此问题curl

setopt extended_glob
Run Code Online (Sandbox Code Playgroud)

这个选项意味着

“将#、~ 和 ^ 字符作为文件名生成模式的一部分等。(初始未加引号的 ~ 总是产生命名目录扩展。)”

所以我认为最好使用--progress-bar而不是-#(或)将它包含在引号中应该保留字符原样,而不是导致外壳扩展它。

在 GitHub 的 curl 进度条选项中找到了这个。