ChatGPT解决这个技术问题 Extra ChatGPT

How do I get cURL to not show the progress bar?

I'm trying to use cURL in a script and get it to not show the progress bar.

I've tried the -s, -silent, -S, and -quiet options, but none of them work.

Here's a typical command I've tried:

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

I only get the progress bar when pushing it to a file, so curl -s http://google.com doesn't have a progress bar, but curl -s http://google.com > temp.html does.

curl -s http://google.com is silent for me over here. Which version of curl and Linux are you on?
-s works fine for me in curl 7.21.0 (i686-pc-linux-gnu) libcurl/7.21.0 OpenSSL/0.9.8o zlib/1.2.3.4 libidn/1.18 and curl 7.19.5 (i386-apple-darwin9.7.0) libcurl/7.19.5 zlib/1.2.3 looks like u need upgrade your curl
I've tried it on Fedora 15, and Mac OSX 10.7.1. Also, I only get the progress bar when pushing it to a file, so curl -s google.com doesn't have a progress bar, but curl -s google.com > temp.html does.
For anyone who wants to figure out version of installed curl and libcurl use command dpkg -l | grep curl
In such a case, run man curl for showing manual page of curl, then hit /progress or /hide progress or stop or whatever for searching query to get what you want. Then you can reach an answer like chmac suggested.

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

works for curl version 7.19.5 on Ubuntu 9.10 (no progress bar). But if for some reason that does not work on your platform, you could always redirect stderr to /dev/null:

curl  http://google.com 2>/dev/null > temp.html

I should have thought of that. It'll hide error messages too, though.
In my case, it's okay to use /dev/null.
Nice - this works great. I had the problem on centOS 6.3, but not on other distros - bizarre, but simple easy workaround - thx!
by the way, see below link about 2>/dev/null if you don't know: stackoverflow.com/questions/10508843/what-is-dev-null-21
According to the man page for an installation of curl on an ubuntu 14 host, -s will make curl not "show progress meter or error messages". (I haven't tried testing or reading source code to see if that is really true.)
c
chmac

In curl version 7.22.0 on Ubuntu and 7.24.0 on OSX the solution to not show progress but to show errors is to use both -s (--silent) and -S (--show-error) like so:

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

This works for both redirected output > /some/file, piped output | less and outputting directly to the terminal for me.

Update: Since curl 7.67.0 there is a new option --no-progress-meter which does precisely this and nothing else, see clonejo's answer for more details.


For my 7.35 using -sS eliminates the progress meter but ALSO eliminates the info normally written to stdout - which I need, since it includes the file name as written to disk instead of the (different) fileid which must be used in the request. There seems no way to simply defeat the progress meter alone!
@Jack Since curl 7.67.0 there is --no-progress-meter, see my answer below.
B
Bill Healey

I found that with curl 7.18.2 the download progress bar is not hidden with:

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

but it is with:

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

c
clonejo

Since curl 7.67.0 (2019-11-06) there is --no-progress-meter, which does exactly this, and nothing else. From the man page:

--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.

It's available in Ubuntu ≥20.04 and Debian ≥11 (Bullseye).

For a bit of history on curl's verbosity options, you can read Daniel Stenberg's blog post.


T
Tom Zych

Not sure why it's doing that. Try -s with the -o option to set the output file instead of >.


V
Vivek Gulati

this could help..

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

Read the question again: OP wants to redirect the result into a file. > /dev/null would discard it. As mentioned in the already accepted answer, 2> /dev/null (redirect stderr) would hide the progress bar.
j
jcollum

On macOS 10.13.6 (High Sierra), the -sS option works. It is especially useful inside Perl, in a command like curl -sS --get {someURL}, which frankly is a whole lot more simple than any of the LWP or HTTP wrappers, for just getting a website or web page's contents.