Comment capturer la sortie Curl dans un fichier?


424

J'ai un document texte qui contient un tas d'URL dans ce format:

URL = "sitehere.com"

Ce que je cherche à faire, c'est d'exécuter curl -K myfile.txtet d'obtenir la sortie des retours de Curl de réponse, dans un fichier.

Comment puis-je faire ceci?


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

Réponses:


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

Écrit la première sortie reçue dans le fichier que vous spécifiez (remplace si une ancienne existe).

curl -K myconfig.txt >> output.txt

Ajoute toutes les sorties que vous recevez au fichier spécifié.

Remarque: le -K est facultatif.


1
Désolé, je dois peut-être clarifier - le document avec toutes mes URL au format s'appelle monfichier.txt, donc je fais curl -K monfichier.txt et il fonctionne à travers chacune mais je n'obtiens la sortie dans aucun fichier.
Tony

22
J'utilise la redirection pour mes lignes de commande:curl url > destfile.x
wasatchwizard

1
Quand je fais l'un ou l'autre, la sortie s'affiche toujours dans le terminal, pas dans le fichier
kris

5
@kris vous avez probablement une esperluette dans l'url. mettre l'url entre guillemets puis essayer
jglouie

Cela fonctionne sans -K. Avec lui, je reçois "Aucune URL spécifiée."
Arya Pourtabatabaie

163

Pour un seul fichier, vous pouvez utiliser -Oau lieu d' -o filenameutiliser le dernier segment du chemin URL comme nom de fichier. Exemple:

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

enregistrera les résultats dans un nouveau fichier nommé big-file.iso dans le dossier actuel. De cette façon, il fonctionne de manière similaire à wget mais vous permet de spécifier d'autres options de boucle qui ne sont pas disponibles lors de l'utilisation de wget.


1
pour plusieurs fichiers, utilisez --remote-name-all unix.stackexchange.com/a/265819/171025
qwr

28

Il existe plusieurs options pour effectuer une sortie curl dans un fichier

 # 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

Pour ceux d'entre vous qui souhaitent copier la sortie cURL dans le presse-papiers au lieu de la sortie dans un fichier, vous pouvez utiliser pbcopyen utilisant le tuyau |après la commande cURL.

Exemple: curl https://www.google.com/robots.txt | pbcopy. Cela copiera tout le contenu de l'URL donnée dans votre presse-papiers.


pbcopy est uniquement disponible sur MacOS. Cependant xclippeut être utilisé à sa place pour Linux voir cette question . Cependant, dans la plupart des cas, je préférerais que curl http://example.com -o example_com.html & cat example_com.html | pbcopy vous n'ayez plus besoin de boucler si vous effacez accidentellement votre presse-papiers.
lacostenycoder

Cela doit également être utilisé avec prudence si vous n'êtes pas sûr de la taille de la charge utile. Par exemple, vous ne voudrez probablement pas le coller dans un éditeur de texte, mais l'ouvrir dans vim ne pose aucun problème. curl http://www.textfiles.com/etext/FICTION/fielding-history-243.txt | pbcopypeut-être n'essayez pas ça!
lacostenycoder

0

Si vous souhaitez stocker votre sortie sur votre bureau, suivez la commande ci-dessous en utilisant la commande post dans git bash.

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


-1

Un peu tard, mais je pense que le PO recherchait quelque chose comme:

curl -K myfile.txt --trace-asci output.txt
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.