Zsh 在尝试使用 youtube-dl 下载视频时显示“未找到匹配项”

Lyn*_*nob 47 linux zsh

我在 CrunchBang(Debian Wheezy 发行版)上使用 pip 下载了 youtube-dl。当我跑

youtube-dl {video URL}
Run Code Online (Sandbox Code Playgroud)

我得到

zsh: no matches found: {video URL}
Run Code Online (Sandbox Code Playgroud)

我猜这和 zsh 有关系,因为我发现 Arch 论坛上的一些用户抱怨它。当我切换到 bash 时它起作用了。

Dan*_*son 81

尝试引用 URL,例如

youtube-dl '{video URL}'
Run Code Online (Sandbox Code Playgroud)

在您的符号中,以避免可能对字符串中的特殊字符进行解释。

  • @Fischer 顺便说一句:我的 Zsh(在带有 oh-my-zsh 的 iTerm2 中的 OS X 上)会自动转义特定于 shell 的字符,例如 `&` 和 `!`,因此可能有一个选项可以配置它。 (2认同)
  • @Fischer:您需要加载 `url-quote-magic` 功能,以便在 URL 中自动将特殊 shellcharacters 引用为引号:`autoload -Uz url-quote-magic; zle -N 自插入 url-quote-magic` (2认同)
  • 引号。感觉自己是个白痴。。 (2认同)

Rad*_*ugh 10

评论中已经提到了这一点,但它值得自己回答:

autoload -Uz bracketed-paste-magic
zle -N bracketed-paste bracketed-paste-magic

autoload -Uz url-quote-magic
zle -N self-insert url-quote-magic
Run Code Online (Sandbox Code Playgroud)

这会导致粘贴的 URL 被自动引用,而无需禁用 globbing。

将上面的代码片段放在您的~/.zshrc文件中以保留此设置以供将来的终端会话使用。


Eya*_*vin 6

您可以使用以下命令禁用所有命令的通配:

unsetopt nomatch
Run Code Online (Sandbox Code Playgroud)

你可以把它放进去~/.zshrc