如何获得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有。

419472 次浏览

不确定它为什么这样做。尝试-s-o选项来设置输出文件而不是>

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

我发现curl 7.18.2的下载进度条没有隐藏:

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

但它与:

curl -ss http://google.com > 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的回答

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

这可以帮助…

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

自从curl7.67.0(2019-11-06)以来,有--no-progress-meter,它只是做这件事,没有别的。来自手册页:

   --no-progress-meter
Option to switch off the progress meter output without muting or
otherwise affecting warning and informational messages like  -s,
--silent does.


Note  that  this  is the negated option name documented. You can
thus use --progress-meter to enable the progress meter again.


See also -v, --verbose and -s, --silent. Added in 7.67.0.

它在Ubuntu≥20.04和Debian≥11(Bullseye)中可用。

有关curl冗长选项的历史,您可以阅读Daniel Stenberg的博客文章

当嵌入到另一个脚本中时,有什么关于安静的建议吗?

    # on remote server (someone_else.sh)
...
curl something_else.sh > file # notice there is no -s
...
    # locally
curl -s host/my.sh | sh
# output still shows embedded curl progress

我环顾四周,没有看到这样的东西:

    export CURL_SILENCE=true; curl host/my.sh | sh