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.

adammenges
sumber
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
unutbu
sumber
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.

chmac
sumber
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
Bill Healey
sumber
6

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

Tom Zych
sumber
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.

RLynch59
sumber
-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/

Daniel Hajduk
sumber