我试图在脚本中使用cURL,并让它不显示进度条。

我试过-s, -silent, -s和-quiet选项,但都没用。

下面是我试过的一个典型的命令:

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

我只得到进度条时,它推到一个文件,所以curl -s http://google.com没有进度条,但curl -s 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的答案了解更多细节。

其他回答

这可能会有所帮助。

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

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

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

但它是:

curl -ss http://google.com > temp.html
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和-o选项来设置输出文件而不是>。