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?


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.


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.


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 

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.


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"


-1

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

curl -K myfile.txt --trace-asci output.txt
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.