ฉันจะร้องขอไฟล์ แต่ไม่บันทึกด้วย Wget ได้อย่างไร [ปิด]


140

ฉันใช้ Wget เพื่อส่งคำขอ HTTP ไปยังเว็บเซิร์ฟเวอร์ใหม่ ฉันทำเช่นนี้เพื่ออุ่นแคช MySQL ฉันไม่ต้องการบันทึกไฟล์หลังจากให้บริการ

wget -nv -do-not-save-file $url

ฉันจะทำอะไรที่เหมือนกับ-do-not-save-filewget ได้ไหม?


3
นี่เป็นคำถามที่ดีกว่าสำหรับ Super User หรือ Unix.SE
Matt Ball

4
ในฐานะนักพัฒนาฉันต้องการทดสอบเซิร์ฟเวอร์ด้วย wget และคำถามนี้เป็นคำถามที่จริงจัง ในฐานะที่เป็นคำตอบที่ดีที่สุดในหัวข้อได้รับ 142 คะแนนบวกดังนั้นคำถามนี้ควรจะเปิดใช้งานอีกครั้งเป็นหัวข้อ
Mladen Adamovic

อีกทางเลือกหนึ่งสำหรับ -q และ -O ให้ใช้แฟล็ก -nd (ไม่มีไดเร็กทอรี) และ --delete-after
Suzana

1
ตามเอกสารช่วยเหลือ (wget -h) คุณสามารถใช้ตัวเลือก - สไปเดอร์เพื่อข้ามดาวน์โหลด (เวอร์ชั่น 1.14)
rocky qi

คำตอบ:


257

ใช้การqตั้งค่าสถานะสำหรับโหมดเงียบและบอกwgetให้ส่งออกไปยัง stdout ด้วยO-(ตัวพิมพ์ใหญ่ o) และเปลี่ยนเส้นทาง/dev/nullเพื่อทิ้งผลลัพธ์:

wget -qO- $url &> /dev/null

>เปลี่ยนเส้นทางเอาต์พุตของแอปพลิเคชัน (ไปยังไฟล์) ถ้า>จะนำหน้าด้วยเครื่องหมายเปลือกเปลี่ยนเส้นทางขาออกทั้งหมด (ข้อผิดพลาดและปกติ) >ไปยังแฟ้มขวาของ หากคุณไม่ได้ระบุเครื่องหมายและจากนั้นเอาท์พุทปกติเท่านั้นที่ถูกเปลี่ยนเส้นทาง

./app &>  file # redirect error and standard output to file
./app >   file # redirect standard output to file
./app 2>  file # redirect error output to file

หากไฟล์/dev/nullนั้นถูกยกเลิกทั้งหมด

วิธีนี้ใช้ได้ดีและง่ายกว่า:

wget -O/dev/null -q $url

เครื่องหมายแอมเปอร์แซนด์และอะไรที่มากกว่าในคำสั่งนี้ คุณสามารถไพพ์เอาต์พุตไปยัง / dev / null ... wget -qO- | / dev / null ... ?
T. Brian Jones

เอ่อฉันพยายามทำสิ่งนี้และมันก็ไม่ได้ผลสำหรับฉัน จากสิ่งที่ฉันค้นพบเครื่องหมายแอมเปอร์แซนด์ควรตามหลังสัญลักษณ์มากกว่า
Tiago Espinha

7
สำหรับผู้ใช้ Windows: wget -q -O NUL http: // ... ปิดการบันทึกและดาวน์โหลดเส้นทางไปยัง NUL (เช่นเดียวกับ / dev / null)
vidario

wget --spider $ url จะทำมัน
thebugfinder

1
wget -O / dev / null $ url
Storm

43

Curlทำตามค่าเริ่มต้นโดยไม่มีพารามิเตอร์หรือค่าสถานะใด ๆ ฉันจะใช้เพื่อจุดประสงค์ของคุณ:

curl $url > /dev/null 2>&1

Curl นั้นเกี่ยวกับการสตรีมและ wget นั้นเป็นเรื่องเกี่ยวกับการคัดลอกไซต์ตามการเปรียบเทียบนี้


1
ใจเย็นคุณอธิบายว่า 2> & 1 หมายถึงอะไร ฉันได้รับ> แต่ทำไมอวสาน
apscience

2
@gladoscc >/dev/nullเปลี่ยนเส้นทางครั้งแรกstd ออกเป็น / dev / null ( >/dev/nullสั้นสำหรับ1>/dev/null), อันดับที่สองเปลี่ยนเส้นทางstd errไปยัง std out
Oleg Mikheev

@apscience เพียงเพื่อเพิ่ม ไฟล์ descriptor สำหรับ std out คือ 1 เชลล์ถือว่า std out เมื่อคุณปล่อย descriptor ออกจากการเปลี่ยนเส้นทาง ดังนั้นถูกตีความว่าเป็น>foo 1>fooเมื่อ&ติดตามการเปลี่ยนเส้นทางจะสั่งให้เชลล์เปลี่ยนเส้นทางตัวอธิบายไฟล์เดิมไปยังเอาต์พุตเดียวกันกับภายหลัง ในกรณีนี้ให้2>&1บอกว่า file descriptor 2 (std err) ไปยังตำแหน่งเดียวกับ file descriptor 1 (std out) เนื่องจาก std out ถูกเปลี่ยนเส้นทางไปยัง / dev / null แล้ว std err จะถูกเปลี่ยนเส้นทางที่นั่น นอกจากนี้คุณยังสามารถเขียน: หรือ1>/dev/null 2>/dev/null 2>/dev/null >&2
ktbiz

คำตอบนี้ถูกต้องแล้วรวมถึงการเปลี่ยนเส้นทางออกเช่นเดียวกับคำตอบที่เลือก การวิ่งcurl http://www.example.comก็เพียงพอแล้ว
Aaron Cicali

40

คุณสามารถใช้-O-(ตัวพิมพ์ใหญ่ o) เพื่อเปลี่ยนเส้นทางเนื้อหาไปยัง stdout (เอาต์พุตมาตรฐาน) หรือไปยังไฟล์ (แม้แต่ไฟล์พิเศษเช่น/dev/null /dev/stderr /dev/stdout)

wget -O- http://yourdomain.com

หรือ:

wget -O- http://yourdomain.com > /dev/null

หรือ: (ผลลัพธ์เดียวกับคำสั่งสุดท้าย)

wget -O/dev/null http://yourdomain.com

ขอบคุณทำงานบน windows เช่นกัน
Pyjong

ขอบคุณ direct-to- / dev / null ฉลาดและคำตอบที่ถูกต้อง: ฉันต้องการ "สถิติเอาท์พุท" แต่ไม่ใช่เนื้อหา
stolsvik
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.