¿Cómo capturar la salida de Curl a un archivo?


423

Tengo un documento de texto que contiene un montón de URL en este formato:

URL = "sitehere.com"

Lo que estoy buscando hacer es correr curl -K myfile.txt y obtener el resultado de la respuesta que Curl devuelve, en un archivo.

¿Cómo puedo hacer esto?


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

Respuestas:


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

Escribe la primera salida recibida en el archivo que especifique (sobrescribe si existe una antigua).

curl -K myconfig.txt >> output.txt

Agrega todos los resultados que recibe al archivo especificado.

Nota: El -K es opcional.


1
Lo siento, tal vez necesito aclararlo: el documento con todas mis URL en el formato se llama myfile.txt, así que curl -K myfile.txt y se ejecuta a través de cada uno, pero no obtengo la salida en ningún archivo.
Tony

22
Uso la redirección para mis líneas de comando:curl url > destfile.x
wasatchwizard

1
Cuando hago cualquiera de estos, la salida todavía se muestra en la terminal, no en el archivo
kris

55
@kris probablemente tengas un ampersand en la url. ponga la URL entre comillas dobles y luego intente
jglouie

Funciona sin el -K. Con él, obtengo "No se especificó ninguna URL".
Arya Pourtabatabaie

163

Para un solo archivo, puede usar en -Olugar de -o filenameusar el último segmento de la ruta URL como nombre de archivo. Ejemplo:

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

guardará los resultados en un nuevo archivo llamado big-file.iso en la carpeta actual. De esta manera, funciona de manera similar a wget, pero le permite especificar otras opciones de rizo que no están disponibles al usar wget.


1
para varios archivos use --remote-name-all unix.stackexchange.com/a/265819/171025
qwr

28

Hay varias opciones para hacer la salida de curl a un archivo

 # 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

Para aquellos de ustedes que desean copiar el resultado de cURL en el portapapeles en lugar de enviarlo a un archivo, pueden usarlo pbcopyusando la tubería| después del comando cURL.

Ejemplo: curl https://www.google.com/robots.txt | pbcopy. Esto copiará todo el contenido de la URL dada a su portapapeles.


pbcopy solo está disponible en MacOS. Sin embargo, xclipse puede utilizar en su lugar para Linux, vea esta pregunta . Sin embargo, en la mayoría de los casos preferiría, curl http://example.com -o example_com.html & cat example_com.html | pbcopy por lo que no necesitaría volver a enroscarse si accidentalmente limpia su portapapeles.
lacostenycoder

Además, esto debe usarse con precaución si no está seguro del tamaño de la carga útil. Por ejemplo, probablemente no quieras pegar esto en un editor de texto, pero abrirlo en vim no es un problema. curl http://www.textfiles.com/etext/FICTION/fielding-history-243.txt | pbcopy¡quizás no intentes esto!
lacostenycoder

0

Si desea almacenar su salida en su escritorio, siga el siguiente comando usando el comando post en git bash. Funcionó para mí.

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


-1

Un poco tarde, pero creo que el OP estaba buscando algo como:

curl -K myfile.txt --trace-asci output.txt
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.