Wie erfasse ich die Curl-Ausgabe in einer Datei?

421

Ich habe ein Textdokument, das eine Reihe von URLs in diesem Format enthält:

URL = "sitehere.com"

Was ich tun möchte, ist auszuführen curl -K myfile.txtund die Ausgabe der Antwort, die Curl zurückgibt, in eine Datei zu bekommen.

Wie kann ich das machen?

Tony
quelle
23
curl http://{one,two}.example.com -o "file_#1.txt" curl.haxx.se/docs/manpage.html
onmyway133

Antworten:

607
curl -K myconfig.txt -o output.txt 

Schreibt die erste Ausgabe, die in der von Ihnen angegebenen Datei empfangen wurde (überschreibt, wenn eine alte vorhanden ist).

curl -K myconfig.txt >> output.txt

Hängt alle Ausgaben, die Sie erhalten, an die angegebene Datei an.

Hinweis: Das -K ist optional.

Alex2php
quelle
1
Tut mir leid, vielleicht muss ich das klarstellen - das Dokument mit all meinen URLs im Format about heißt myfile.txt, also locke ich -K myfile.txt und es läuft durch jede einzelne, aber ich bekomme die Ausgabe in keine Datei.
Tony
22
Ich benutze die Umleitung für meine Befehlszeilen:curl url > destfile.x
Wasatchwizard
1
Wenn ich beides mache, wird die Ausgabe immer noch im Terminal angezeigt, nicht in der Datei
kris
5
@kris du hast wahrscheinlich ein kaufmännisches Und in der URL.
Setzen Sie
Es funktioniert ohne das -K. Damit erhalte ich "Keine URL angegeben".
Arya Pourtabatabaie
161

Für eine einzelne Datei können Sie -Oanstelle des -o filenameletzten Segments des URL-Pfads den Dateinamen verwenden. Beispiel:

curl http://example.com/folder/big-file.iso -O

speichert die Ergebnisse in einer neuen Datei mit dem Namen big-file.iso im aktuellen Ordner. Auf diese Weise funktioniert es ähnlich wie wget, aber Sie können andere Curl-Optionen angeben , die bei Verwendung von wget nicht verfügbar sind.

Greg Bray
quelle
1
Verwenden --remote-name-all Sie
qwr
28

Es gibt verschiedene Optionen, um eine Curl-Ausgabe in eine Datei durchzuführen

 # saves it to myfile.txt
curl http://www.example.com/data.txt -o myfile.txt

# The #1 will get substituted with the url, so the filename contains the url
curl http://www.example.com/data.txt -o "file_#1.txt" 

# saves to data.txt, the filename extracted from the URL
curl http://www.example.com/data.txt -O 

# saves to filename determined by the Content-Disposition header sent by the server.
curl http://www.example.com/data.txt -O -J 
RubenLaguna
quelle
6

Wenn Sie die cURL-Ausgabe in die Zwischenablage kopieren möchten, anstatt sie in eine Datei auszugeben, können Sie sie pbcopymithilfe der Pipe |nach dem Befehl cURL verwenden.

Beispiel : curl https://www.google.com/robots.txt | pbcopy. Dadurch wird der gesamte Inhalt der angegebenen URL in Ihre Zwischenablage kopiert.

Md Mazedul Islam Khan
quelle
pbcopy ist nur unter MacOS verfügbar. Jedoch xclipkann in seinen Platz eingesetzt werden , für Linux , diese Frage sehen . In den meisten Fällen würde ich es jedoch vorziehen. curl http://example.com -o example_com.html & cat example_com.html | pbcopy Sie müssten sich also nicht erneut kräuseln, wenn Sie versehentlich Ihre Zwischenablage löschen.
Lacostenycoder
Auch dies sollte mit Vorsicht verwendet werden, wenn Sie sich über die Größe der Nutzlast nicht sicher sind. Zum Beispiel möchten Sie dies wahrscheinlich nicht in einen Texteditor einfügen, aber das Öffnen in vim ist kein Problem. curl http://www.textfiles.com/etext/FICTION/fielding-history-243.txt | pbcopyVielleicht versuch das nicht!
Lacostenycoder
0

Wenn Sie Ihre Ausgabe auf Ihrem Desktop speichern möchten, befolgen Sie den folgenden Befehl mit dem Befehl post in git bash. Es hat bei mir funktioniert.

curl https: // localhost: 8080 --request POST --header "Inhaltstyp: application / json" -o "C: \ Desktop \ test.txt"

SanthoshRam
quelle
-1

Ein bisschen spät, aber ich denke, das OP suchte nach etwas wie:

curl -K myfile.txt --trace-asci output.txt
lca25er
quelle