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

7

783

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.

Servais answered 10/9, 2011 at 18:30 Comment(6)
curl -s http://google.com is silent for me over here. Which version of curl and Linux are you on?Hyperform
-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 curlAphaeresis
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.Servais
for me works with curl 7.22.0-3ubuntu4.11 (Ubuntu 12.04) and 7.35.0-1ubuntu2.2 (Ubuntu 14.04).Hanrahan
For anyone who wants to figure out version of installed curl and libcurl use command dpkg -l | grep curlHanrahan
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.Icelandic
S
743
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
Servant answered 10/9, 2011 at 19:4 Comment(8)
I should have thought of that. It'll hide error messages too, though.Neman
In my case, it's okay to use /dev/null.Servais
Nice - this works great. I had the problem on centOS 6.3, but not on other distros - bizarre, but simple easy workaround - thx!Luminal
by the way, see below link about 2>/dev/null if you don't know: https://mcmap.net/q/22509/-what-is-dev-null-2-gt-amp-1-duplicateIcelandic
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.)Varietal
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/362760, you can use "curl -s -S 'example.com' > /dev/null" if you only want errors. I'm no expert on this myself though...Puppy
I recommend people to use --no-progress-meter instead to only hide the bar without muting other warnings. See https://mcmap.net/q/47018/-how-do-i-get-curl-to-not-show-the-progress-bar.Majormajordomo
This answer is incorrect because it hides everything, not just progress bar. It's like using a tactical nuke to kill a mosquito, and it should be unchecked.Incompressible
P
718

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.

Photoflood answered 14/1, 2014 at 9:1 Comment(2)
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!Predial
@Predial Since curl 7.67.0 there is --no-progress-meter, see my answer below.Sacttler
S
78

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.

Sacttler answered 7/1, 2021 at 21:24 Comment(1)
This should be the accepted answer. All other answers are wrong.Incompressible
T
51

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
Tramontane answered 8/8, 2012 at 18:54 Comment(0)
N
8

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

Neman answered 10/9, 2011 at 19:0 Comment(0)
H
0

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.

Heterodox answered 4/2, 2020 at 18:55 Comment(0)
C
-3

this could help..

curl 'http://example.com' > /dev/null
Costar answered 1/10, 2020 at 13:20 Comment(1)
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.Maymaya

© 2022 - 2024 — McMap. All rights reserved.