我只是想使用 下载 YouTube 视频youtube-dl
,但是,zsh
将问号?
(分隔 URL 的查询部分)解释为通配符运算符(匹配任何单个字符),因此它会中止命令并显示以下错误消息:
$ youtube-dl https://www.youtube.com/watch?v=eDSESarTQXk
zsh: no matches found: https://www.youtube.com/watch?v=eDSESarTQXk
有没有办法zsh
识别 URL,比如使用正则表达式,这样它就不会尝试将它们全部匹配?
答案1
您可以禁用NOMATCH
“选项嘚:
setopt NO_NOMATCH
当该NOMATCH
选项处于启用状态时(默认)嘚如果模式与文件名不匹配,则打印错误消息。通过禁用NOMATCH
,与文件名不匹配的模式在参数列表中保持不变。
请注意,该选项的名称确实是NOMATCH
,因此您必须使用NO_NOMATCH
来禁用它,设置MATCH
不起作用。
注意力:这会影响所有通配符,而不仅仅是 URL。因此,如果你以任何方式依赖嘚当模式不匹配时返回错误,这不是解决办法。(遗憾的是,与NULL_GLOB
没有 glob 限定符允许NOMATCH
根据情况启用/禁用不同。)
答案2
您可以将 URL 放在引号中,这样它就可以起作用。
$ youtube-dl 'https://www.youtube.com/watch?v=eDSESarTQXk'
[youtube] eDSESarTQXk: Downloading webpage
[youtube] eDSESarTQXk: Downloading video info webpage
[youtube] eDSESarTQXk: Extracting video information
...