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?
curl
and libcurl
use command dpkg -l | grep curl
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.
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
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.
--no-progress-meter
, see my answer below.
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
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.
Not sure why it's doing that. Try -s
with the -o
option to set the output file instead of >
.
this could help..
curl 'http://example.com' > /dev/null
> /dev/null
would discard it. As mentioned in the already accepted answer, 2> /dev/null
(redirect stderr) would hide the progress bar.
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.
Success story sharing
2>/dev/null
if you don't know: stackoverflow.com/questions/10508843/what-is-dev-null-21-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.)