ChatGPT解决这个技术问题 Extra ChatGPT

如何让 cURL 不显示进度条?

我正在尝试在脚本中使用 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 上?
-s 在 curl 7.21.0 (i686-pc-linux-gnu) libcurl/7.21.0 OpenSSL/0.9.8o zlib/1.2.3.4 libidn/1.18 和 curl 7.19.5 (i386-apple-darwin9. 7.0) libcurl/7.19.5 zlib/1.2.3 看起来你需要升级你的 curl
我已经在 Fedora 15 和 Mac OSX 10.7.1 上尝试过。另外,我只在将其推送到文件时才获得进度条,因此 curl -s google.com 没有进度条,但 curl -s google.com > temp.html 可以。
对于想要了解已安装 curllibcurl 版本的任何人,请使用命令 dpkg -l | grep curl
在这种情况下,运行 man curl 以显示 curl 的手册页,然后点击 /progress/hide progressstop 或任何搜索查询以获得您想要的内容。然后你可以得到一个像 chmac 建议的答案。

u
unutbu
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

我应该想到的。不过,它也会隐藏错误消息。
就我而言,可以使用 /dev/null。
很好 - 这很好用。我在 centOS 6.3 上遇到了问题,但在其他发行版上没有 - 奇怪,但简单易行的解决方法 - 谢谢!
顺便说一句,如果您不知道,请参阅下面有关 2>/dev/null 的链接:stackoverflow.com/questions/10508843/what-is-dev-null-21
根据在 ubuntu 14 主机上安装 curl 的手册页,-s 将使 curl 不“显示进度表或 错误消息”。 (我还没有尝试测试或阅读源代码,看看这是否真的如此。)
c
chmac

在 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 了解更多详细信息。


对于我的 7.35,使用 -sS 消除了进度表,但也消除了通常写入 stdout 的信息——这是我需要的,因为它包括写入磁盘的文件名,而不是请求中必须使用的(不同的)fileid。似乎没有办法简单地单独击败进度表!
@Jack 由于 curl 7.67.0 有 --no-progress-meter,请参阅 my answer below
B
Bill Healey

我发现使用 curl 7.18.2 下载进度条不会隐藏:

curl -s http://google.com > temp.html

但它是:

curl -ss http://google.com > temp.html

c
clonejo

自 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


T
Tom Zych

不知道为什么这样做。尝试使用带有 -o 选项的 -s 而不是 > 来设置输出文件。


V
Vivek Gulati

这可以帮助..

curl 'http://example.com' > /dev/null

再次阅读问题:OP 想要将结果重定向到文件中。 > /dev/null 会丢弃它。如已接受的答案中所述,2> /dev/null(重定向标准错误)将隐藏进度条。
j
jcollum

在 macOS 10.13.6 (High Sierra) 上,-sS 选项有效。它在 Perl 中特别有用,在像 curl -sS --get {someURL} 这样的命令中,坦率地说,它比任何 LWP 或 HTTP 包装器都简单得多,仅用于获取网站或网页的内容。