Bagaimana cara mendapatkan CURL untuk tidak menampilkan bilah kemajuan?


564

Saya mencoba menggunakan cURL dalam skrip dan membuatnya tidak menampilkan bilah kemajuan.

Saya sudah mencoba -s, -silent, -S, dan -quietpilihan, namun tidak satupun dari mereka bekerja.

Inilah perintah khas yang saya coba:

curl -s http://google.com > temp.html

Saya hanya mendapatkan bilah kemajuan saat mendorongnya ke file, jadi curl -s http://google.comtidak memiliki bilah kemajuan, tetapi curl -s http://google.com > temp.htmltidak.


12
curl -s http://google.comdiam untuk saya di sini. Versi curl dan Linux manakah Anda?
— Adrian Petrescu

-s berfungsi dengan baik untuk saya di curl 7.21.0 (i686-pc-linux-gnu) libcurl / 7.21.0 OpenSSL / 0.9.8o zlib / 1.2.3.4 libidn / 1.18 dan curl 7.19.5 (i386-apple-darwin9. 7.0) libcurl / 7.19.5 zlib / 1.2.3 sepertinya Anda perlu memutakhirkan ikal Anda
— derevo

Saya sudah mencobanya di Fedora 15, dan Mac OSX 10.7.1. Juga, saya hanya mendapatkan bilah kemajuan saat mendorongnya ke file, jadi curl -s google.com tidak memiliki bilah kemajuan, tetapi curl -s google.com > temp.html.
— adammenges

1
Bagi siapa saja yang ingin mengetahui versi diinstal curldan libcurlmenggunakan perintahdpkg -l | grep curl
— Dimitry K

1
Dalam kasus seperti itu, jalankan man curluntuk menampilkan halaman manual curl, lalu tekan /progressatau /hide progressatau stopatau apapun untuk pencarian query untuk mendapatkan apa yang Anda inginkan. Maka Anda dapat mencapai jawaban seperti yang disarankan chmac.
— kenju

Jawaban:


562
curl -s http://google.com > temp.html

berfungsi untuk curl versi 7.19.5 di Ubuntu 9.10 (tidak ada bilah kemajuan). Tetapi jika karena alasan yang tidak bekerja pada platform Anda, Anda selalu bisa mengarahkan ulang stderr ke / dev / null:

curl  http://google.com 2>/dev/null > temp.html

31
Aku seharusnya memikirkan itu. Ini akan menyembunyikan pesan kesalahan juga.
— Tom Zych

1
Dalam kasus saya, tidak masalah menggunakan / dev / null.
— adammenges

Bagus - ini bekerja dengan baik. Saya punya masalah pada centOS 6.3, tetapi tidak pada distro lain - aneh, tetapi solusi sederhana yang mudah - thx!
— Ross

2>/dev/null
— Ngomong

Menurut halaman manual untuk instalasi curl pada host ubuntu 14, -sakan membuat curl tidak "menampilkan progress meter atau pesan kesalahan ". (Saya belum mencoba pengujian atau membaca kode sumber untuk melihat apakah itu benar.)
— David Winiecki

535

Di curl versi 7.22.0 di Ubuntu dan 7.24.0 di OSX solusi untuk tidak menunjukkan kemajuan tetapi untuk menunjukkan kesalahan adalah dengan menggunakan keduanya -s( --silent) dan -S( --show-error) seperti:

curl -sS http://google.com > temp.html

Ini berfungsi baik untuk keluaran yang diarahkan > /some/file, keluaran yang disalurkan | lessdan keluaran langsung ke terminal untuk saya.


3
Untuk 7.35 saya menggunakan -sS menghilangkan progress meter tetapi JUGA menghilangkan info yang biasanya ditulis ke stdout - yang saya butuhkan, karena itu termasuk nama file yang ditulis ke disk, bukan (berbeda) fileid yang harus digunakan dalam permintaan. Sepertinya tidak ada cara untuk mengalahkan meteran kemajuan sendirian!
— Jack

48

Saya menemukan bahwa dengan curl 7.18.2 bilah progres unduhan tidak disembunyikan dengan:

curl -s http://google.com > temp.html

tetapi dengan:

curl -ss http://google.com > temp.html

6

Tidak yakin mengapa melakukan itu. Coba -sdengan -oopsi untuk mengatur file output, bukan >.


0

Pada MacOS 10.13.6 (High Sierra), opsi '-ss' berfungsi. Ini sangat berguna di dalam perl, dalam perintah seperti curl -ss --get {someURL}, yang sejujurnya jauh lebih sederhana daripada pembungkus LWP atau HTTP, untuk hanya mendapatkan situs web atau konten halaman web.


-1

Beberapa waktu lalu menulis skrip sederhana untuk melakukan scrapping untuk mencari contoh versi jdk tertentu yang diinstal:

#!/bin/bash
REPO_TAG_URL=$1

SEARCH=`curl -s $REPO_TAG_URL`
NEXT_PAGE=`echo $SEARCH | jq -r .next`

echo $SEARCH | jq '.results[].name'

while [[ $NEXT_PAGE != 'null' ]]; do
    SEARCH=`curl -s $NEXT_PAGE`
    NEXT_PAGE=`echo $SEARCH | jq -r .next`
    echo $SEARCH | jq '.results[].name'
done

echo "Thats all folks"

Anda menggunakannya seperti ini: ./script.sh https://registry.hub.docker.com/v2/repositories/library/tomcat/tags/

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.