好的,我刚刚开始使用命令行,所以我猜这真的是一个非常菜鸟的问题:
我根据这篇文章下载了 youtube-dlhttps://ytdl-org.github.io/youtube-dl/download.html并尝试使用以下命令下载 YouTube 视频:
youtube-dl --verbose https://www.youtube.com/watch?v=52bRYf198XY
但它又回来了
zsh: no matches found: https://www.youtube.com/watch?v=52bRYf198XY
我使用的是 2014 年中期的 Macbook pro Catalina,希望它能有帮助。
答案1
?
出现在地址中。Shell?
在文件名生成中将其用作一个字符的通配符。
如果当前工作目录中没有匹配的文件,许多 shell 会?
按字面意思处理;您的命令虽然不是完全可靠的,但可能在这样的 shell 中可以工作。但在 Zsh 中不行,它会抱怨没有匹配。
匹配可以是例如https:/www.youtube.com/watchXv=52bRYf198XY
(其中https:
和www.youtube.com
是目录;并且//
成为/
)。如果您碰巧有一个具有此路径的现有文件,则您的命令会将错误的地址传递给该工具。如果有很多匹配项,它会传递很多参数。这种行为显然不是您想要的。文件名生成在这里毫无意义。
用单引号括住地址以使 shell 将其逐字传递给工具:
youtube-dl --verbose 'https://www.youtube.com/watch?v=52bRYf198XY'
答案2
我可以确认 Kamil Maciorowski 发布的上述解决方案也适用于yt-dlp- youtube-dl fork 至少目前是更新的。
yt-dlp -f "best[height>=720]" '<your_youtube_URL_in_single_quotes_for_ZSH>' -o '%(id)s.%(ext)s'