Як зафіксувати вихід Curl у файл?


421

У мене є текстовий документ, який містить купу URL-адрес у такому форматі:

URL = "sitehere.com"

Що я хочу зробити, це запустити curl -K myfile.txtі отримати результат відповіді, що повертається Curl, у файл.

Як я можу це зробити?


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

Відповіді:


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

Записує перший вихід, отриманий у вказаному вами файлі (перезаписує, якщо існує старий).

curl -K myconfig.txt >> output.txt

Додає весь отриманий результат у вказаний файл.

Примітка. -К необов'язково.


1
Вибачте, можливо, мені потрібно уточнити - документ із усіма моїми URL-адресами у форматі про називається myfile.txt, тому я завиваю -K myfile.txt, і він працює, хоча кожен, але я не отримую вихід у жоден файл.
Тоні

22
Я використовую переспрямування для своїх командних рядків:curl url > destfile.x
wasatchwizard

1
Коли я виконую будь-яке з цих, вихід все ще відображається в терміналі, а не у файлі
kris

5
@kris у вас, ймовірно, є адреса в URL-адресі. поставте URL у подвійні лапки, а потім спробуйте
jglouie

Працює без -К. З його допомогою я отримую "Не вказано URL-адресу".
Arya Pourtabatabaie

162

Для одного файлу ви можете використовувати -Oзамість того, -o filenameщоб використовувати останній сегмент шляху URL як ім'я файлу. Приклад:

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

збереже результати в новому файлі з назвою big-file.iso у поточній папці. Таким чином він працює аналогічно wget, але дозволяє вказати інші параметри завитка , недоступні при використанні wget.


1
для декількох файлів використовуйте --remote-name-all unix.stackexchange.com/a/265819/171025
qwr

28

Існує кілька варіантів, щоб зробити висновок curl у файл

 # 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

Для тих, хто хоче скопіювати вихід CURL у буфер обміну, а не виводити у файл, ви можете використовувати pbcopy, використовуючи трубу |після команди cURL.

Приклад: curl https://www.google.com/robots.txt | pbcopy. Це скопіює весь вміст із вказаної URL-адреси у буфер обміну.


pbcopy доступний лише на MacOS. Однак xclipчи можна використовувати його місце для Linux, дивіться це питання . Однак я б у більшості випадків віддав перевагу. curl http://example.com -o example_com.html & cat example_com.html | pbcopy Тому вам не потрібно буде згортатися знову, якщо випадково очистите буфер обміну.
лакостенікодер

Також це слід використовувати обережно, якщо ви не впевнені в розмірі корисного навантаження. Наприклад, ви, ймовірно, не хотіли б вставити це в текстовий редактор, але відкрити його в vim не буде проблем. curl http://www.textfiles.com/etext/FICTION/fielding-history-243.txt | pbcopyможливо, не спробуйте цього!
лакостенікодер

0

Якщо ви хочете зберегти свій результат на робочому столі, виконайте наведену нижче команду, використовуючи команду post у git bash. Це працювало для мене.

curl https: // localhost: 8080 - запит POST --header "Тип вмісту: application / json" -o "C: \ Desktop \ test.txt"


-1

Трохи запізнився, але я думаю, що ОП шукала щось на кшталт:

curl -K myfile.txt --trace-asci output.txt
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.