Как захватить вывод Curl в файл?

424

У меня есть текстовый документ, который содержит несколько 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

Ответы:

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

Записывает первый вывод, полученный в указанном вами файле (перезаписывает, если существует старый).

curl -K myconfig.txt >> output.txt

Добавляет весь полученный вывод в указанный файл.

Примечание: -K не является обязательным.

Alex2php
источник
1
Извините, возможно, мне нужно уточнить - документ со всеми моими URL в формате about называется myfile.txt, поэтому я делаю curl -K myfile.txt, и он запускается, хотя каждый из них, но я не получаю вывод ни в один файл.
Тони
22
Я использую редирект для своих командных строк:curl url > destfile.x
wasatchwizard
1
Когда я делаю либо из этих выходных по- прежнему отображается в терминале, а не в файле
Kris
5
@kris у тебя, вероятно, в URL есть амперсанд. поместите URL в двойные кавычки, а затем попробуйте
jglouie
Работает без -K. С его помощью я получаю «URL не указан».
Арья Pourtabatabaie
163

Для одного файла вы можете использовать -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 
RubenLaguna
источник
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 чтобы вам больше не пришлось скручиваться, если вы случайно очистите буфер обмена.
lacostenycoder
Также это следует использовать с осторожностью, если вы не уверены в размере полезной нагрузки. Например, вы, вероятно, не захотите вставить это в текстовый редактор, но открыть его в vim не проблема. curl http://www.textfiles.com/etext/FICTION/fielding-history-243.txt | pbcopyможет быть, не пытайтесь это сделать!
lacostenycoder
0

Если вы хотите сохранить свой вывод на рабочий стол, следуйте приведенной ниже команде, используя команду post в git bash. Это сработало для меня.

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

SanthoshRam
источник
-1

Немного поздно, но я думаю, что ОП искал что-то вроде:

curl -K myfile.txt --trace-asci output.txt
lca25er
источник