Bagaimana cara menangkap output Curl ke file?

423

Saya memiliki dokumen teks yang berisi banyak URL dalam format ini:

URL = "sitehere.com"

Yang ingin saya lakukan adalah menjalankan curl -K myfile.txt, dan mendapatkan hasil dari respon yang dikembalikan Curl, ke dalam file.

Bagaimana saya bisa melakukan ini?

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

Jawaban:

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

Menulis keluaran pertama yang diterima dalam file yang Anda tentukan (menimpa jika ada yang lama).

curl -K myconfig.txt >> output.txt

Tambahkan semua output yang Anda terima ke file yang ditentukan.

Catatan: -K adalah opsional.

Alex2php
sumber
1
Maaf mungkin saya perlu mengklarifikasi - dokumen dengan semua URL saya dalam format tentang disebut myfile.txt jadi saya melakukan curl -K myfile.txt dan ini berjalan meskipun masing-masing tetapi saya tidak mendapatkan output ke file apa pun.
Tony
22
Saya menggunakan pengalihan untuk baris perintah saya:curl url > destfile.x
wasatchwizard
1
Ketika saya melakukan salah satu dari ini output masih menampilkan di terminal, bukan di file
kris
5
@ Kris Anda mungkin memiliki ampersand di url. masukkan url dalam tanda kutip ganda dan kemudian coba
jglouie
Ini bekerja tanpa -K. Dengan itu, saya mendapatkan "Tidak ada URL yang ditentukan."
Arya Pourtabatabaie
163

Untuk satu file, Anda dapat menggunakan -Oalih-alih -o filenamemenggunakan segmen terakhir dari jalur URL sebagai nama file. Contoh:

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

akan menyimpan hasilnya ke file baru bernama big-file.iso di folder saat ini. Dengan cara ini ia bekerja mirip dengan wget tetapi memungkinkan Anda untuk menentukan opsi ikal lain yang tidak tersedia saat menggunakan wget.

Greg Bray
sumber
1
untuk banyak file gunakan --remote-name-all unix.stackexchange.com/a/265819/171025
qwr
28

Ada beberapa opsi untuk membuat keluaran ikal ke file

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

Bagi Anda yang ingin menyalin output cURL di clipboard alih-alih menghasilkan ke file, Anda dapat menggunakan pbcopydengan menggunakan pipa |setelah perintah cURL.

Contoh: curl https://www.google.com/robots.txt | pbcopy. Ini akan menyalin semua konten dari URL yang diberikan ke clipboard Anda.

Md Mazedul Islam Khan
sumber
pbcopy hanya tersedia di MacOS. Namun xclipdapat digunakan di tempat itu untuk Linux melihat pertanyaan ini . Namun saya akan dalam banyak kasus lebih suka curl http://example.com -o example_com.html & cat example_com.html | pbcopy Jadi Anda tidak perlu meringkuk lagi jika Anda tidak sengaja menghapus clipboard Anda.
lacostenycoder
Ini juga harus digunakan dengan hati-hati jika Anda tidak yakin dengan ukuran payload. Misalnya Anda mungkin tidak ingin menempelkan ini ke editor teks, tetapi membukanya di vim tidak ada masalah. curl http://www.textfiles.com/etext/FICTION/fielding-history-243.txt | pbcopymungkin jangan coba ini!
lacostenycoder
0

Jika Anda ingin menyimpan output Anda di desktop Anda, ikuti perintah di bawah ini menggunakan perintah post di git bash. Ini bekerja untuk saya.

curl https: // localhost: 8080 --meminta POST --header "Tipe Konten: application / json" -o "C: \ Desktop \ test.txt"

SanthoshRam
sumber
-1

Agak terlambat, tapi saya pikir OP sedang mencari sesuatu seperti:

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