Come acquisire l'output Curl in un file?


423

Ho un documento di testo che contiene un sacco di URL in questo formato:

URL = "sitehere.com"

Quello che sto cercando di fare è eseguire curl -K myfile.txt, e ottenere l'output della risposta restituita da Curl, in un file.

Come posso fare questo?


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

Risposte:


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

Scrive il primo output ricevuto nel file specificato (sovrascrive se ne esiste uno precedente).

curl -K myconfig.txt >> output.txt

Aggiunge tutto l'output che ricevi al file specificato.

Nota: -K è facoltativo.


1
Scusate forse devo chiarire - il documento con tutti i miei URL nel formato circa si chiama myfile.txt, quindi faccio arricciare -K myfile.txt e viene eseguito da ognuno ma non ottengo l'output in alcun file.
Tony,

22
Uso il reindirizzamento per le mie righe di comando:curl url > destfile.x
wasatchwizard,

1
Quando eseguo una di queste due uscite, l'output viene ancora visualizzato nel terminale, non nel file
kris,

5
@Kris probabilmente hai una e commerciale nell'URL. metti l'URL tra virgolette e poi prova
jglouie

Funziona senza il -K. Con esso, ottengo "Nessun URL specificato".
Arya Pourtabatabaie,

163

Per un singolo file è possibile utilizzare -Oinvece di -o filenameutilizzare l'ultimo segmento del percorso URL come nome file. Esempio:

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

salverà i risultati in un nuovo file chiamato big-file.iso nella cartella corrente. In questo modo funziona in modo simile a wget ma consente di specificare altre opzioni di arricciatura che non sono disponibili quando si utilizza wget.


1
per più file utilizzare --remote-name-all unix.stackexchange.com/a/265819/171025
qwr

28

Esistono diverse opzioni per rendere l'arricciatura in un file

 # 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 

6

Per quelli di voi che vogliono copiare l'output di cURL negli appunti invece di emetterli in un file, potete usare pbcopyusando la pipe| dopo il comando cURL.

Esempio: curl https://www.google.com/robots.txt | pbcopy. Questo copierà negli Appunti tutto il contenuto dell'URL indicato.


pbcopy è disponibile solo su MacOS. Comunque xclippuò essere usato al posto di Linux, vedi questa domanda . Tuttavia, nella maggior parte dei casi preferirei curl http://example.com -o example_com.html & cat example_com.html | pbcopy Quindi non dovresti arricciarti di nuovo se cancelli accidentalmente gli appunti.
lacostenycoder

Inoltre, questo dovrebbe essere usato con cautela se non si è sicuri della dimensione del payload. Ad esempio, probabilmente non vorrai incollarlo in un editor di testo, ma aprirlo in vim non è un problema. curl http://www.textfiles.com/etext/FICTION/fielding-history-243.txt | pbcopyforse non provarlo!
lacostenycoder

0

Se vuoi archiviare il tuo output sul desktop, segui il comando seguente usando post command in git bash. Ha funzionato per me.

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


-1

Un po 'tardi, ma penso che l'OP stesse cercando qualcosa come:

curl -K myfile.txt --trace-asci output.txt
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.