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.


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

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.


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

6

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


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.


-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/

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.