Come faccio a far in modo che cURL non mostri la barra di avanzamento?


564

Sto cercando di usare cURL in uno script e farlo in modo che non mostri la barra di avanzamento.

Ho provato il -s, -silent, -S, e -quietle opzioni, ma nessuno di loro lavoro.

Ecco un tipico comando che ho provato:

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

Ottengo la barra di avanzamento solo quando la spingo su un file, quindi curl -s http://google.comnon ha una barra di avanzamento, ma lo curl -s http://google.com > temp.htmlfa.


12
curl -s http://google.comtace qui per me. Su quale versione di Curl e Linux sei?
Adrian Petrescu,

-s funziona bene per 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 e curl 7.19.5 (i386-apple-darwin9. 7.0) libcurl / 7.19.5 zlib / 1.2.3 sembra che tu abbia bisogno di aggiornare il tuo ricciolo
derevo

L'ho provato su Fedora 15 e Mac OSX 10.7.1. Inoltre, ottengo la barra di avanzamento solo quando la spingo su un file, quindi curl -s google.com non ha una barra di avanzamento, ma curl -s google.com > temp.html sì.
Adammenges

1
Per chiunque voglia capire la versione di installata curle libcurlusare il comandodpkg -l | grep curl
Dimitry K

1
In tal caso una, correre man curlper mostrare pagina di manuale di riccio, poi ha colpito /progresso /hide progresso stopo qualsiasi altra cosa per la ricerca query per ottenere quello che vuoi. Quindi puoi raggiungere una risposta come suggerito chmac.
Kenju,

Risposte:


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

funziona con la versione arricciata 7.19.5 su Ubuntu 9.10 (nessuna barra di avanzamento). Ma se per qualche motivo che non funziona sulla tua piattaforma, puoi sempre reindirizzare stderr a / dev / null:

curl  http://google.com 2>/dev/null > temp.html

31
Avrei dovuto pensarci. Nasconderà anche i messaggi di errore, però.
Tom Zych,

1
Nel mio caso, va bene usare / dev / null.
martedì

Bello - funziona alla grande. Ho avuto il problema su centOS 6.3, ma non su altre distro - bizzarra, ma semplice soluzione alternativa - grazie!
Ross,

tra l'altro, vedi sotto link di 2>/dev/nullse non si conosce: stackoverflow.com/questions/10508843/what-is-dev-null-21
kenju

Secondo la pagina man per un'installazione di arricciatura su un host ubuntu 14, l' -sarricciatura non "mostrerà i parametri di progresso o i messaggi di errore ". (Non ho provato a testare o leggere il codice sorgente per vedere se è vero.)
David Winiecki,

535

Nella versione arricciata 7.22.0 su Ubuntu e 7.24.0 su OSX la soluzione per non mostrare i progressi ma per mostrare gli errori è usare entrambi -s( --silent) e -S( --show-error) in questo modo:

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

Questo funziona sia per l'output reindirizzato > /some/file, sia per l'output convogliato | lessche per l'output direttamente sul terminale per me.


3
Per il mio 7.35 l'uso di -sS elimina l'indicatore di progresso ma ANCHE elimina le informazioni normalmente scritte su stdout - cosa di cui ho bisogno, poiché include il nome del file come scritto sul disco invece del (diverso) fileid che deve essere usato nella richiesta. Non sembra esserci alcun modo per sconfiggere il solo indicatore di progresso da solo!
Jack

48

Ho scoperto che con curl 7.18.2 la barra di avanzamento del download non è nascosta con:

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

ma è con:

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

6

Non sono sicuro del perché lo stia facendo. Prova -scon l' -oopzione per impostare il file di output anziché >.


0

Su MacOS 10.13.6 (High Sierra), l'opzione '-ss' funziona. È particolarmente utile all'interno di perl, in un comando simile curl -ss --get {someURL}, che francamente è molto più semplice di qualsiasi wrapper LWP o HTTP, per ottenere semplicemente il contenuto di un sito Web o di una pagina web.


-1

Qualche tempo fa ha scritto un semplice script per eseguire la demolizione per cercare ad esempio versioni specifiche di jdk installate:

#!/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 usi in questo modo: ./script.sh https://registry.hub.docker.com/v2/repositories/library/tomcat/tags/

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.