如何获取cURL以不显示进度栏?


562

我正在尝试在脚本中使用cURL,并使其显示进度栏。

我已经试过了-s-silent-S,和-quiet选择,但他们没有工作。

这是我尝试过的典型命令:

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

我只在将进度条推送到文件时才得到进度条,所以curl -s http://google.com没有进度条,但是curl -s http://google.com > temp.html有。


12
curl -s http://google.com在这里对我沉默。您正在使用哪个版本的curl和Linux?
Adrian Petrescu

-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
derevo 2011年

我已经在Fedora 15和Mac OSX 10.7.1上尝试过。另外,我只在将进度条推送到文件时才获得进度条,所以curl -s google.com没有进度条,但是curl -s google.com > temp.html却有。
adammenges 2011年

1
对于任何想弄清楚安装curllibcurl使用命令版本的人dpkg -l | grep curl
Dimitry K 2014年

1
在这种情况下,运行man curl用于显示卷曲的手册页,然后点击/progress/hide progressstop或任何用于搜索查询得到你想要的东西。然后您可以达到chmac建议的答案。
kenju 2015年

Answers:


560
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

31
我应该想到这一点。不过,它也会隐藏错误消息。
Tom Zych

1
就我而言,可以使用/ dev / null。
adammenges

很好-效果很好。我在centOS 6.3上遇到了问题,但在其他发行版上却没有问题-奇怪,但简单易行的解决方法-谢谢!
罗斯,

顺便说一句,有关2>/dev/null您是否不知道,请参见以下链接:stackoverflow.com/questions/10508843/what-is-dev-null-21
kenju 2015年

根据在ubuntu 14主机上安装curl的手册页,-s不会使curl出现“显示进度表或错误消息 ”。(我没有尝试测试或阅读源代码以查看是否确实如此。)
David Winiecki,

535

在Ubuntu的curl版本7.22.0和OSX的7.24.0版本中,不显示进度显示错误的解决方案是同时使用-s--silent)和-S--show-error),如下所示:

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

这对重定向输出> /some/file,管道输出| less和直接输出到终端都有效。


3
对于我的7.35,使用-sS消除了进度表,但也消除了通常写入stdout的信息-这是我所需要的,因为它包括写入磁盘的文件名,而不是请求中必须使用的(不同)fileid。似乎没有办法简单地击败进度表!
杰克

48

我发现使用curl 7.18.2时,下载进度条没有隐藏:

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

但它具有:

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

6

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


0

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


-1

前段时间写了一个简单的脚本来抓取搜索安装的特定版本的jdk的示例:

#!/bin/bash
REPO_TAG_URL=$1

SEARCH=`curl -s $REPO_TAG_URL`
NEXT_PAGE=`echo $SEARCH | jq -r .next`

echo $SEARCH | jq '.results[].name'

while [[ $NEXT_PAGE != 'null' ]]; do
    SEARCH=`curl -s $NEXT_PAGE`
    NEXT_PAGE=`echo $SEARCH | jq -r .next`
    echo $SEARCH | jq '.results[].name'
done

echo "Thats all folks"

您可以这样使用它: ./script.sh https://registry.hub.docker.com/v2/repositories/library/tomcat/tags/

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.