642
votes

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.

7
curl -s http://google.com is silent for me over here. Which version of curl and Linux are you on?Adrian Petrescu
-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 curlderevo
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.adammenges
For anyone who wants to figure out version of installed curl and libcurl use command dpkg -l | grep curlDimitry K
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.kenju

7 Answers

639
votes
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
585
votes

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.

50
votes

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
14
votes

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.

7
votes

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

0
votes

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 webpage's contents.

0
votes

this could help..

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