我正在尝试在脚本中使用 cURL 并让它不显示进度条。
我尝试了 -s
、-silent
、-S
和 -quiet
选项,但它们都不起作用。
这是我尝试过的典型命令:
curl -s http://google.com > temp.html
我只在将其推送到文件时获得进度条,因此 curl -s http://google.com
没有进度条,但 curl -s http://google.com > temp.html
有。
curl -s http://google.com
在这里对我保持沉默。你在哪个版本的 curl 和 Linux 上?
curl
和 libcurl
版本的任何人,请使用命令 dpkg -l | grep curl
man curl
以显示 curl 的手册页,然后点击 /progress
或 /hide progress
或 stop
或任何搜索查询以获得您想要的内容。然后你可以得到一个像 chmac 建议的答案。
curl -s http://google.com > temp.html
适用于 Ubuntu 9.10 上的 curl 版本 7.19.5(无进度条)。但是,如果由于某种原因在您的平台上不起作用,您总是可以将 stderr 重定向到 /dev/null:
curl http://google.com 2>/dev/null > temp.html
在 Ubuntu 上的 curl 版本 7.22.0 和 OSX 上的 7.24.0 中,不显示进度但显示错误的解决方案是同时使用 -s
(--silent
)和 -S
(--show-error
) 像这样:
curl -sS http://google.com > temp.html
这适用于重定向输出 > /some/file
、管道输出 | less
和直接输出到终端。
更新:从 curl 7.67.0 开始,有一个新选项 --no-progress-meter
正是这样做的,没有别的,请参阅 clonejo's answer 了解更多详细信息。
--no-progress-meter
,请参阅 my answer below。
我发现使用 curl 7.18.2 下载进度条不会隐藏:
curl -s http://google.com > temp.html
但它是:
curl -ss http://google.com > temp.html
自 curl 7.67.0 (2019-11-06) 以来,就有了 --no-progress-meter
,它就是这样做的,没有别的。从手册页:
--no-progress-meter 关闭进度表输出而不静音或以其他方式影响警告和信息消息的选项,如 -s、--silent 。请注意,这是记录的否定选项名称。因此,您可以使用 --progress-meter 再次启用进度表。另请参见 -v、--verbose 和 -s、--silent。在 7.67.0 中添加。
它在 Ubuntu ≥20.04 和 Debian ≥11 (Bullseye) 中可用。
有关 curl 详细选项的一些历史记录,您可以阅读 Daniel Stenberg's blog post。
不知道为什么这样做。尝试使用带有 -o
选项的 -s
而不是 >
来设置输出文件。
这可以帮助..
curl 'http://example.com' > /dev/null
> /dev/null
会丢弃它。如已接受的答案中所述,2> /dev/null
(重定向标准错误)将隐藏进度条。
在 macOS 10.13.6 (High Sierra) 上,-sS
选项有效。它在 Perl 中特别有用,在像 curl -sS --get {someURL}
这样的命令中,坦率地说,它比任何 LWP 或 HTTP 包装器都简单得多,仅用于获取网站或网页的内容。
不定期副业成功案例分享
2>/dev/null
的链接:stackoverflow.com/questions/10508843/what-is-dev-null-21-s
将使 curl 不“显示进度表或 错误消息”。 (我还没有尝试测试或阅读源代码,看看这是否真的如此。)