Wie kann ich cURL dazu bringen, den Fortschrittsbalken nicht anzuzeigen?

562

Ich versuche, cURL in einem Skript zu verwenden und dafür zu sorgen , dass der Fortschrittsbalken nicht angezeigt wird.

Ich habe das versucht -s, -silent, -S, und -quietOptionen, aber keiner von ihnen arbeiten.

Hier ist ein typischer Befehl, den ich ausprobiert habe:

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

Ich erhalte den Fortschrittsbalken nur, wenn ich ihn in eine Datei verschiebe, habe also curl -s http://google.comkeinen Fortschrittsbalken, aber curl -s http://google.com > temp.html.

adammenges
quelle
12
curl -s http://google.comschweigt für mich hier. Auf welcher Version von Curl und Linux bist du?
Adrian Petrescu
-s funktioniert gut für mich 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 und Curl 7.19.5 (i386-apple-darwin9). 7.0) libcurl / 7.19.5 zlib / 1.2.3 sieht so aus, als müssten Sie Ihre Curl aktualisieren
derevo
Ich habe es unter Fedora 15 und Mac OSX 10.7.1 versucht. Außerdem wird der Fortschrittsbalken nur angezeigt, wenn er in eine Datei verschoben wird , sodass curl -s google.com keinen Fortschrittsbalken hat, curl -s google.com > temp.html jedoch.
adammenges
1
Für alle, die die Version des installierten Befehls herausfinden curlund libcurlverwenden möchtendpkg -l | grep curl
Dimitry K
1
In einem solchen Fall laufen man curlfür die Ansicht manuelle Seite von Locke, dann drücken Sie /progressoder /hide progressoder stopoder was auch immer Abfrage für die Suche zu bekommen , was Sie wollen. Dann können Sie eine Antwort wie von chmac vorgeschlagen erreichen.
Kenju

Antworten:

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

funktioniert für Curl Version 7.19.5 unter Ubuntu 9.10 (kein Fortschrittsbalken). Wenn dies jedoch aus irgendeinem Grund auf Ihrer Plattform nicht funktioniert, können Sie stderr jederzeit nach / dev / null umleiten:

curl  http://google.com 2>/dev/null > temp.html
unutbu
quelle
31
Daran hätte ich denken sollen. Es werden jedoch auch Fehlermeldungen ausgeblendet.
Tom Zych
1
In meinem Fall ist es in Ordnung, / dev / null zu verwenden.
adammenges
Schön - das funktioniert super. Ich hatte das Problem mit centOS 6.3, aber nicht mit anderen Distributionen - bizarr, aber einfach, einfache Problemumgehung - danke!
Ross
Übrigens , siehe unten Link, 2>/dev/nullwenn Sie nicht wissen: stackoverflow.com/questions/10508843/what-is-dev-null-21
Kenju
Laut der Manpage für eine Installation von Curl auf einem Ubuntu 14-Host -swird Curl nicht "Fortschrittsanzeige oder Fehlermeldungen anzeigen ". (Ich habe nicht versucht, Quellcode zu testen oder zu lesen, um zu sehen, ob das wirklich wahr ist.)
David Winiecki
535

In der Curl-Version 7.22.0 unter Ubuntu und 7.24.0 unter OSX besteht die Lösung, um keinen Fortschritt anzuzeigen, aber Fehler anzuzeigen , darin, sowohl -s( --silent) als auch -S( --show-error) wie folgt zu verwenden :

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

Dies funktioniert für mich sowohl für umgeleitete Ausgabe als > /some/fileauch für Pipeline-Ausgabe | lessund direkte Ausgabe an das Terminal.

chmac
quelle
3
Für meine 7.35-Verwendung von -sS wird die Fortschrittsanzeige entfernt, aber AUCH die normalerweise auf stdout geschriebenen Informationen - die ich benötige, da sie den auf die Festplatte geschriebenen Dateinamen anstelle der (anderen) Datei-ID enthalten, die in der Anforderung verwendet werden muss. Es scheint keine Möglichkeit zu geben, die Fortschrittsanzeige allein zu besiegen!
Jack
48

Ich habe festgestellt, dass mit Curl 7.18.2 der Fortschrittsbalken für den Download nicht ausgeblendet ist mit:

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

aber es ist mit:

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

Ich bin mir nicht sicher, warum es das tut. Versuchen Sie es -smit der -oOption, die Ausgabedatei anstelle von festzulegen >.

Tom Zych
quelle
0

Unter MacOS 10.13.6 (High Sierra) funktioniert die Option '-ss'. Es ist besonders nützlich in Perl, in einem Befehl wie curl -ss --get {someURL}, der offen gesagt viel einfacher ist als jeder der LWP- oder HTTP-Wrapper, um nur den Inhalt einer Website oder Webseite abzurufen.

RLynch59
quelle
-1

Vor einiger Zeit wurde ein einfaches Skript geschrieben, um das Scrapping für die Suche nach bestimmten Versionen von jdk durchzuführen:

#!/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"

Sie verwenden es so: ./script.sh https://registry.hub.docker.com/v2/repositories/library/tomcat/tags/

Daniel Hajduk
quelle