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.