ซ่อนเอาต์พุต curl


209

ฉันกำลังขอขดที่จะแสดงผล html ในคอนโซลเช่นนี้

<b>Warning</b>:  Cannot modify header information - headers already sent by (output started at /home/domain/public_html/wp-content/themes/explicit/functions/ajax.php:87) in <b>/home/domain/public_html/wp-content/themes/explicit/functions/ajax.php</b> on line <b>149</b><br />......

ฯลฯ

ฉันต้องการซ่อนผลลัพธ์เหล่านี้เมื่อเรียกใช้คำขอ CURL ลองใช้ CURL เช่นนี้

curl -s 'http://example.com'

แต่มันยังคงแสดงเอาต์พุตฉันจะซ่อนเอาต์พุตได้อย่างไร

ขอบคุณ


1
ผนวก>/dev/nullที่ส่วนท้าย อ่านเพิ่มเติมเกี่ยวกับ File Descriptors ในmywiki.wooledge.org/FileDescriptor?highlight=%28FD%29
Valentin Bajrami

คำตอบ:


323

จาก man curl

-s, - เงียบโหมดเงียบหรือเงียบ อย่าแสดงตัววัดความคืบหน้าหรือข้อความแสดงข้อผิดพลาด ทำให้ Curl ปิดเสียง มันจะยังคงส่งออกข้อมูลที่คุณขออาจไปถึงขั้ว / stdout เว้นแต่คุณจะเปลี่ยนเส้นทางไป

ดังนั้นหากคุณไม่ต้องการใช้เอาต์พุตใด ๆ :

curl -s 'http://example.com' > /dev/null

22
หากคุณต้องการเฉพาะข้อผิดพลาดให้เพิ่มการตั้งค่าสถานะ -S curl -s -S ' example.com '> / dev / null
Gonzalo Cao

โปรดทราบว่าคุณไม่สามารถทำcurl -o /dev/null; มันจะโยนข้อผิดพลาดการเขียน
Keith Tyler

แต่คุณสามารถcurl ... 2>/dev/nullเปลี่ยน stderr ได้เท่านั้น
Jesse Chisholm

2
@ KeithTyler curl https://www.google.com -o /dev/nullประสบความสำเร็จโดยไม่มีข้อผิดพลาดสำหรับฉัน curl-7.58.0ฉันใช้
x-yuri

ที่ฉันคิดว่าwgetควรจะใช้แทนcurlการดาวน์โหลดไฟล์
บริสุทธิ์

70

อันนี้ดูสง่างามกว่าสำหรับฉัน:

curl --silent --output /dev/null http://example.com

นอกจากนี้หากคุณต้องการดูรหัส HTTP:

curl --write-out '%{http_code}' --silent --output /dev/null http://example.com

เอกสารเต็มรูปแบบเป็นที่นี่


6
หากคุณยังต้องการแสดงข้อผิดพลาดคุณสามารถเพิ่ม--show-errorพารามิเตอร์ได้เช่นกัน
Simon East

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