¿Cómo hago para que cURL no muestre la barra de progreso?

564

Estoy tratando de usar cURL en un script y hago que no muestre la barra de progreso.

He probado el -s, -silent, -S, y -quietopciones, pero ninguno de ellos funciona.

Aquí hay un comando típico que he probado:

curl -s http://google.com > temp.html

Solo obtengo la barra de progreso cuando la empujo a un archivo, por lo curl -s http://google.comque no tiene una barra de progreso, pero la curl -s http://google.com > temp.htmltiene.

adammenges
fuente
12
curl -s http://google.comEs silencioso para mí por aquí. ¿En qué versión de curl y Linux estás?
Adrian Petrescu
-s funciona bien para mí en curl 7.21.0 (i686-pc-linux-gnu) libcurl / 7.21.0 OpenSSL / 0.9.8o zlib / 1.2.3.4 libidn / 1.18 y curl 7.19.5 (i386-apple-darwin9. 7.0) libcurl / 7.19.5 zlib / 1.2.3 parece que necesita actualizar su curl
derevo
Lo he probado en Fedora 15 y Mac OSX 10.7.1. Además, solo obtengo la barra de progreso al insertarlo en un archivo, por lo que curl -s google.com no tiene una barra de progreso, pero curl -s google.com > temp.html sí.
adammenges
1
Para cualquiera que quiera averiguar la versión del comando instalado curly libcurlusardpkg -l | grep curl
Dimitry K
1
En este caso, un, correr man curlpara mostrar la página del manual de rizo, y luego presionar /progresso /hide progresso stopo lo que sea para buscar consulta para obtener lo que quiere. Entonces puede llegar a una respuesta como chmac sugirió.
kenju

Respuestas:

562
curl -s http://google.com > temp.html

funciona para curl versión 7.19.5 en Ubuntu 9.10 (sin barra de progreso). Pero si por alguna razón eso no funciona en su plataforma, siempre puede redirigir stderr a / dev / null:

curl  http://google.com 2>/dev/null > temp.html
unutbu
fuente
31
Debería haber pensado en eso. Sin embargo, también ocultará los mensajes de error.
Tom Zych
1
En mi caso, está bien usar / dev / null.
adammenges
Bien, esto funciona muy bien. Tuve el problema en centOS 6.3, pero no en otras distribuciones - extraño, pero simple solución simple - ¡gracias!
Ross
por cierto, vea el siguiente enlace sobre 2>/dev/nullsi no sabe: stackoverflow.com/questions/10508843/what-is-dev-null-21
kenju
De acuerdo con la página del manual para una instalación de curl en un host ubuntu 14, -scurl no "mostrará el medidor de progreso o los mensajes de error ". (No he intentado probar o leer el código fuente para ver si eso es realmente cierto.)
David Winiecki
535

En la versión curl 7.22.0 en Ubuntu y 7.24.0 en OSX, la solución para no mostrar el progreso, pero para mostrar errores es usar ambos -s( --silent) y -S( --show-error) de esta manera:

curl -sS http://google.com > temp.html

Esto funciona para la salida redirigida > /some/file, la salida canalizada | lessy la salida directa al terminal para mí.

chmac
fuente
3
Para mi 7.35, usar -sS elimina el medidor de progreso, pero TAMBIÉN elimina la información normalmente escrita en stdout, que necesito, ya que incluye el nombre del archivo como está escrito en el disco en lugar del fileid (diferente) que debe usarse en la solicitud. ¡Parece que no hay forma de derrotar al medidor de progreso solo!
Jack
48

Descubrí que con curl 7.18.2 la barra de progreso de descarga no está oculta con:

curl -s http://google.com > temp.html

pero es con:

curl -ss http://google.com > temp.html
Bill Healey
fuente
6

No estoy seguro de por qué está haciendo eso. Pruebe -scon la -oopción para configurar el archivo de salida en lugar de >.

Tom Zych
fuente
0

En MacOS 10.13.6 (High Sierra), la opción '-ss' funciona. Es especialmente útil dentro de Perl, en un comando como curl -ss --get {someURL}, que francamente es mucho más simple que cualquiera de los contenedores LWP o HTTP, solo para obtener el contenido de un sitio web o página web.

RLynch59
fuente
-1

Hace algún tiempo escribió un script simple para hacer el desguace para buscar, por ejemplo, versiones específicas de jdk instaladas:

#!/bin/bash
REPO_TAG_URL=$1

SEARCH=`curl -s $REPO_TAG_URL`
NEXT_PAGE=`echo $SEARCH | jq -r .next`

echo $SEARCH | jq '.results[].name'

while [[ $NEXT_PAGE != 'null' ]]; do
    SEARCH=`curl -s $NEXT_PAGE`
    NEXT_PAGE=`echo $SEARCH | jq -r .next`
    echo $SEARCH | jq '.results[].name'
done

echo "Thats all folks"

Lo usas así: ./script.sh https://registry.hub.docker.com/v2/repositories/library/tomcat/tags/

Daniel Hajduk
fuente