Como capturar a saída do Curl em um arquivo?

423

Eu tenho um documento de texto que contém vários URLs neste formato:

URL = "sitehere.com"

O que estou procurando fazer é executar curl -K myfile.txte obter a saída da resposta que Curl retorna, em um arquivo.

Como posso fazer isso?

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

Respostas:

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

Grava a primeira saída recebida no arquivo especificado (sobrescreve se houver uma antiga).

curl -K myconfig.txt >> output.txt

Anexa toda a saída que você recebe ao arquivo especificado.

Nota: -K é opcional.

Alex2php
fonte
1
Desculpe, talvez eu precise esclarecer - o documento com todos os meus URLs no formato sobre é chamado myfile.txt, então eu enrolo -K myfile.txt e ele roda em cada um deles, mas não recebo a saída em nenhum arquivo.
Tony
22
Eu uso o redirecionamento para os meus linhas de comando:curl url > destfile.x
wasatchwizard
1
Quando eu faço um desses a saída ainda é exibido no terminal, não no arquivo
kris
5
@ kris você provavelmente tem um e comercial no URL. colocar a url entre aspas duplas e tente
jglouie
Funciona sem o -K. Com ele, recebo "Nenhum URL especificado".
Arya Pourtabatabaie 1/11/19
163

Para um único arquivo, você pode usar em -Ovez de -o filenameusar o último segmento do caminho da URL como o nome do arquivo. Exemplo:

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

salvará os resultados em um novo arquivo chamado big-file.iso na pasta atual. Dessa forma, funciona de maneira semelhante ao wget, mas permite especificar outras opções de ondulação que não estão disponíveis ao usar o wget.

Greg Bray
fonte
1
para vários arquivos usar --remote-name-all unix.stackexchange.com/a/265819/171025
QWR
28

Existem várias opções para gerar saída de curvatura em um arquivo

 # 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
fonte
6

Para aqueles que você deseja copiar a saída cURL na área de transferência, em vez de enviar para um arquivo, você pode usar pbcopyo pipe |após o comando cURL.

Exemplo: curl https://www.google.com/robots.txt | pbcopy. Isso copiará todo o conteúdo do URL fornecido para a área de transferência.

Md Mazedul Islam Khan
fonte
O pbcopy está disponível apenas no MacOS. No entanto, xclippode ser usado em seu lugar para Linux, veja esta pergunta . No entanto, na maioria dos casos, preferiria que curl http://example.com -o example_com.html & cat example_com.html | pbcopy você não precisasse enrolar novamente se limpar acidentalmente a área de transferência.
lacostenycoder
Além disso, isso deve ser usado com cautela se você não tiver certeza do tamanho da carga útil. Por exemplo, você provavelmente não gostaria de colar isso em um editor de texto, mas abri-lo no vim não tem problema. curl http://www.textfiles.com/etext/FICTION/fielding-history-243.txt | pbcopytalvez não tente isso!
lacostenycoder
0

Se você deseja armazenar sua saída na área de trabalho, siga o comando abaixo usando o comando post no git bash.

curl https: // localhost: 8080 --request POST --header "Tipo de conteúdo: application / json" -o "C: \ Desktop \ test.txt"

SanthoshRam
fonte
-1

Um pouco tarde, mas acho que o OP estava procurando algo como:

curl -K myfile.txt --trace-asci output.txt
lca25er
fonte