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

378,852

Solution 1

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

Solution 2

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.

Solution 3

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

Solution 4

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.

Solution 5

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

Share:
378,852
adammenges
Author by

adammenges

blog.adammenges.com/about

Updated on January 14, 2021

Comments

  • adammenges
    adammenges over 3 years

    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.

  • Tom Zych
    Tom Zych over 12 years
    I should have thought of that. It'll hide error messages too, though.
  • adammenges
    adammenges over 11 years
    In my case, it's okay to use /dev/null.
  • Ross
    Ross about 11 years
    Nice - this works great. I had the problem on centOS 6.3, but not on other distros - bizarre, but simple easy workaround - thx!
  • kenju
    kenju over 8 years
    by the way, see below link about 2>/dev/null if you don't know: stackoverflow.com/questions/10508843/what-is-dev-null-21
  • Jack
    Jack over 7 years
    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!
  • David Winiecki
    David Winiecki over 5 years
    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.)
  • Kenny
    Kenny over 4 years
    It's an old question, maybe this wasn't possible back then: According to Gonzalo Cao on unix.stackexchange.com/questions/196549/hide-curl-output/362‌​760, you can use "curl -s -S 'example.com' > /dev/null" if you only want errors. I'm no expert on this myself though...
  • fcdt
    fcdt over 3 years
    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.
  • clonejo
    clonejo over 3 years
    @Jack Since curl 7.67.0 there is --no-progress-meter, see my answer below.
  • Tony
    Tony over 2 years
    I recommend people to use --no-progress-meter instead to only hide the bar without muting other warnings. See stackoverflow.com/a/21109454/2461761.