ฉันจะรับ cURL เพื่อไม่แสดงแถบความคืบหน้าได้อย่างไร


562

ฉันพยายามใช้ cURL ในสคริปต์และทำให้มันไม่แสดงแถบความคืบหน้า

ฉันได้พยายาม-s, -silent, -Sและ-quietตัวเลือก แต่ไม่มีของพวกเขาทำงาน

นี่เป็นคำสั่งทั่วไปที่ฉันได้ลอง:

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

ฉันเพิ่งได้รับแถบความคืบหน้าเมื่อกดไปที่ไฟล์ดังนั้นจึงcurl -s http://google.comไม่มีแถบความคืบหน้า แต่curl -s http://google.com > temp.htmlจะมี


12
curl -s http://google.comเงียบสำหรับฉันที่นี่ คุณใช้ curl และ Linux เวอร์ชันใด
Adrian Petrescu

-s ทำงานได้ดีสำหรับฉันใน curl 7.21.0 (i686-pc-linux-gnu) libcurl / 7.21.0 OpenSSL / 0.9.8o zlib / 1.2.3.4 libidn / 1.18 และ curl 7.19.5 (i386-apple-darwin9) 7.0) libcurl / 7.19.5 zlib / 1.2.3 ดูเหมือนว่าคุณต้องการอัปเกรด curl ของคุณ
derevo

ฉันได้ลองใช้กับ Fedora 15 และ Mac OSX 10.7.1 แล้ว นอกจากนี้ฉันจะได้รับแถบความคืบหน้าเมื่อกดไปที่ไฟล์ดังนั้น curl -s google.comไม่มีแถบความคืบหน้า แต่ curl -s google.com > temp.html ทำ
adammenges

1
สำหรับผู้ที่ต้องการทราบรุ่นของคำสั่งที่ติดตั้งcurlและlibcurlใช้งานdpkg -l | grep curl
Dimitry K

1
ในกรณีเช่นนี้ให้เรียกใช้man curlเพื่อแสดงหน้าคู่มือของ curl จากนั้นกดปุ่ม/progressหรือ/hide progressหรือstopค้นหาข้อความค้นหาเพื่อให้ได้สิ่งที่คุณต้องการ จากนั้นคุณสามารถเข้าถึงคำตอบเช่น chmac ที่แนะนำ
kenju

คำตอบ:


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

ใช้งานได้กับ curl เวอร์ชั่น 7.19.5 บน Ubuntu 9.10 (ไม่มีแถบความคืบหน้า) แต่ถ้าด้วยเหตุผลบางอย่างที่ไม่ทำงานบนแพลตฟอร์มของคุณคุณสามารถเปลี่ยนเส้นทาง stderr ไปยัง / dev / null ได้ตลอดเวลา:

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

31
ฉันควรคิดอย่างนั้น มันจะซ่อนข้อความผิดพลาดด้วย
Tom Zych

1
ในกรณีของฉันมันก็โอเคที่จะใช้ / dev / null
adammenges

ดีมาก - ใช้งานได้ดี ฉันมีปัญหากับ centOS 6.3 แต่ไม่ใช่ใน distros อื่น ๆ - แปลกประหลาด แต่วิธีแก้ปัญหาง่าย ๆ ง่าย ๆ - ขอบคุณ!
Ross

โดยวิธีการดูลิงค์ด้านล่างเกี่ยวกับ2>/dev/nullถ้าคุณไม่ทราบ: stackoverflow.com/questions/10508843/what-is-dev-null-21
kenju

ตามหน้า man สำหรับการติดตั้ง curl บนโฮสต์อูบุนตู 14, -sจะทำให้ขดไม่ได้ "แสดงมิเตอร์ความคืบหน้าหรือข้อความแสดงข้อผิดพลาด " (ฉันไม่ได้ลองทดสอบหรืออ่านซอร์สโค้ดเพื่อดูว่ามันเป็นเรื่องจริงหรือไม่)
David Winiecki

535

ใน curl เวอร์ชั่น 7.22.0 บน Ubuntu และ 7.24.0 บน OSX ทางออกที่จะไม่แสดงความคืบหน้าแต่เพื่อแสดงข้อผิดพลาดคือการใช้ทั้ง-s( --silent) และ-S( --show-error) เช่น:

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

สิ่งนี้ใช้ได้กับทั้งเอาต์พุตที่ถูกเปลี่ยนทิศทางเอาต์พุตของ> /some/fileไพพ์| lessและการส่งออกไปยังเทอร์มินัลโดยตรง


3
สำหรับ 7.35 ของฉันโดยใช้ -sS กำจัดตัววัดความคืบหน้า แต่ยังกำจัดข้อมูลที่เขียนไปยัง stdout ซึ่งฉันต้องการเนื่องจากมันมีชื่อไฟล์ที่เขียนลงดิสก์แทน fileid (ต่างกัน) ซึ่งจะต้องใช้ในคำขอ ดูเหมือนจะไม่มีทางเอาชนะความก้าวหน้าเพียงอย่างเดียวได้!
แจ็ค

48

ฉันพบว่าด้วย curl 7.18.2 แถบความคืบหน้าการดาวน์โหลดไม่ได้ถูกซ่อนไว้ด้วย:

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

แต่มันอยู่กับ:

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

6

ไม่แน่ใจว่าทำไมมันถึงทำแบบนั้น ลอง-sด้วยตัวเลือกการตั้งค่าไฟล์ที่ส่งออกแทน-o>


0

บน MacOS 10.13.6 (High Sierra) ตัวเลือก '-ss' ใช้งานได้ มันมีประโยชน์โดยเฉพาะอย่างยิ่งภายใน Perl ในคำสั่งที่ชอบcurl -ss --get {someURL}ซึ่งตรงไปตรงมาง่ายกว่าทั้งห่อ LWP หรือ HTTP ใด ๆ เพียงแค่รับเนื้อหาเว็บไซต์หรือหน้าเว็บ


-1

บางเวลาที่ผ่านมาเขียนสคริปต์ง่าย ๆ เพื่อทำการ scrapping สำหรับการค้นหาตัวอย่างรุ่นเฉพาะของการติดตั้ง jdk:

#!/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"

คุณใช้มันแบบนี้: ./script.sh https://registry.hub.docker.com/v2/repositories/library/tomcat/tags/

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.