วิธีการซ่อนเอาต์พุตหน้าจอ (printf) ของเชลล์แอ็พพลิเคชันใน Linux?
วิธีการซ่อนเอาต์พุตหน้าจอ (printf) ของเชลล์แอ็พพลิเคชันใน Linux?
คำตอบ:
คุณสามารถเปลี่ยนเส้นทางผลลัพธ์ของโปรแกรมใด ๆ เพื่อไม่ให้เห็น
$ program > /dev/null
การดำเนินการนี้จะเปลี่ยนเส้นทางเอาต์พุตมาตรฐาน - คุณจะยังคงเห็นข้อผิดพลาด
$ program &> /dev/null
นี่จะเปลี่ยนเส้นทางเอาต์พุตทั้งหมดรวมถึงข้อผิดพลาด
wget
คุณสามารถใช้-q
ตัวเลือกเพื่อทำให้เงียบ
มีสามอุปกรณ์ IO ที่มีอยู่ใน commandline
standard in - 0
standard out - 1
standard error - 2
หากต้องการเปลี่ยนเส้นทางออกมาตรฐาน (เอาต์พุตเริ่มต้น) ไปยังไฟล์ (และเขียนทับไฟล์) ให้ใช้
command > file.log
ในการต่อท้าย file.log ให้ใช้ 2> s
command >> file.log
เพื่อเปลี่ยนเส้นทางข้อผิดพลาดมาตรฐานไปที่ file.log ให้ใช้
command 2> file.log
และเพื่อผนวก
command 2>> file.log
เพื่อรวมเอาท์พุทเป็นหนึ่งสตรีมและส่งทั้งหมดไปยังที่เดียว
command > file.log 2>&1
สิ่งนี้จะส่ง 2 (stderr) เป็น 1 (stdout) และส่ง stdout ไปที่ file.log
โปรดสังเกตว่าอาจเป็นไปได้ที่จะเปลี่ยนเส้นทางมาตรฐานเป็นคำสั่งที่คาดว่า stdin
command << file.txt
แก้ไข
สำหรับรายละเอียดเพิ่มเติมดูคู่มือการใช้สคริปต์การทุบตีขั้นสูง
command > file.log 2>&1
งานได้บ้าง
> file
2>&1
คนแรกเปลี่ยนเส้นทางออกมาตรฐานไปยังไฟล์ ตัวที่สองใช้ตัวอธิบายไฟล์ที่สองและเปลี่ยนเส้นทางไปที่ตัวที่หนึ่ง คุณสามารถทำย้อนกลับเปลี่ยนเส้นทางออกมาตรฐานข้อผิดพลาดมาตรฐานที่ใช้แล้วเปลี่ยนเส้นทางข้อผิดพลาดมาตรฐานไปยังไฟล์ที่มี>&2
2> file
ปิดบัง stdout
./command >/dev/null
ซ่อนstdout
และstderr
./command >/dev/null 2>&1
ซ่อนstdout
และstderr
ปล่อยเทอร์มินัล (เรียกใช้คำสั่งในเบื้องหลัง)
./command >/dev/null 2>&1 &
หากคุณต้องการซ่อนเอาท์พุท (และไม่บันทึกลงในไฟล์) คุณสามารถใช้:
แก้ไข:
$ command &> / dev / null
สำหรับ Mac OS X (10.6 "Snow Leopard"):
หากคุณต้องการซ่อนเอาต์พุตโดยไม่แจ้งให้โปรแกรมทราบโดยตรวจสอบตัวอธิบายไฟล์เอาต์พุต / ข้อผิดพลาดคุณสามารถลองใช้สิ่งต่อไปนี้ในเชลล์:
stty flusho; command ;stty -flusho
หรือถ้าคุณต้องการซ่อนอินพุตจากเทอร์มินัลด้วยวิธี:
stty -echo; command ;stty echo
ดูหน้าคู่มือ stty (1) สำหรับข้อมูลเพิ่มเติม
สำหรับ Linux สิ่งที่ฉันรู้ก็คือ Ubunutu (10.04 "Lucid") และบางส่วน "Debian / Arch" (ความเห็นด้านล่าง - tnx hendry) ไม่มีการflusho
ตั้งค่า (และฉันไม่เห็นอะไรที่เหมาะสมใน man-page) . การecho
ตั้งค่าทำงานบน Ubuntu ต่อไป