How do I get cURL to not show the progress bar?
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 >
.
Comments
-
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, butcurl -s http://google.com > temp.html
does. -
Tom Zych over 12 yearsI should have thought of that. It'll hide error messages too, though.
-
adammenges over 11 yearsIn my case, it's okay to use /dev/null.
-
Ross about 11 yearsNice - this works great. I had the problem on centOS 6.3, but not on other distros - bizarre, but simple easy workaround - thx!
-
kenju over 8 yearsby the way, see below link about
2>/dev/null
if you don't know: stackoverflow.com/questions/10508843/what-is-dev-null-21 -
Jack over 7 yearsFor 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 over 5 yearsAccording 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 over 4 yearsIt'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...
-
fcdt over 3 yearsRead 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 over 3 years@Jack Since curl 7.67.0 there is
--no-progress-meter
, see my answer below. -
Tony over 2 yearsI recommend people to use
--no-progress-meter
instead to only hide the bar without muting other warnings. See stackoverflow.com/a/21109454/2461761.