ใช่แสดงข้อความstderr
เมื่อมีการใช้อาร์กิวเมนต์ที่ไม่ถูกต้อง และหากเป็นสาเหตุให้แอปพลิเคชันออกให้ออกด้วยสถานะออกที่ไม่ใช่ศูนย์
คุณควรใช้สตรีมข้อผิดพลาดมาตรฐานสำหรับข้อความการวินิจฉัยหรือการโต้ตอบกับผู้ใช้ ข้อความวินิจฉัยรวมถึงข้อความแสดงข้อผิดพลาดคำเตือนและข้อความอื่น ๆ ที่ไม่ได้เป็นส่วนหนึ่งของเอาต์พุตของยูทิลิตี้เมื่อทำงานอย่างถูกต้อง ("ถูกต้อง" หมายถึงไม่มีอะไรพิเศษเกิดขึ้นเช่นไฟล์ที่ไม่ถูกค้นพบ
เชลล์แสดง (all?) จำนวนมากแสดงพร้อมท์ผู้ใช้ประเภทใดและเมนูอื่น ๆstderr
เพื่อให้การเปลี่ยนเส้นทางstdout
จะไม่หยุดคุณจากการโต้ตอบกับเชลล์ในวิธีที่มีความหมาย
ต่อไปนี้มาจากบล็อกโพสต์ในหัวข้อนี้:
นี่เป็นคำพูดจาก Doug McIllroy ผู้ประดิษฐ์ท่อ Unix อธิบายว่าทำไมมันstderr
ถึงเป็นอย่างนั้น 'v6' หมายถึงเวอร์ชั่นเฉพาะของระบบปฏิบัติการ Unix ดั้งเดิมที่เปิดตัวในปี 1975
โปรแกรมทั้งหมดวางการวินิจฉัยบนเอาต์พุตมาตรฐาน สิ่งนี้ทำให้เกิดปัญหาเสมอเมื่อเอาท์พุทถูกเปลี่ยนเส้นทางไปยังไฟล์ แต่ก็ไม่สามารถทนได้เมื่อเอาต์พุตถูกส่งไปยังกระบวนการที่ไม่สงสัย อย่างไรก็ตามไม่เต็มใจที่จะละเมิดความเรียบง่ายของรูปแบบมาตรฐานอินพุตและเอาต์พุตมาตรฐานผู้คนยอมรับสถานการณ์นี้ผ่าน v6 หลังจากนั้นไม่นานเดนนิสริตชี่ตัดปม Gordian ด้วยการแนะนำข้อผิดพลาดมาตรฐาน นั่นไม่เพียงพอ ด้วยการวินิจฉัยท่ออาจมาจากหลาย ๆ โปรแกรมที่ทำงานพร้อมกัน การวินิจฉัยที่จำเป็นในการระบุตัวเอง
- Doug McIllroy, "นักวิจัย UNIX Reader: ข้อเขียนที่ตัดตอนมาจากคู่มือโปรแกรมเมอร์, 1971-1986"
หากต้องการ "ระบุตนเอง" หมายถึงเพียงแค่พูดว่า "เฮ้! ฉันกำลังพูดถึงอยู่นี่มันผิดพลาด: [... ]":
$ ls nothere
ls: nothere: No such file or directory
การทำเช่นนี้stderr
เป็นที่นิยมเพราะมันอาจจะเป็นอย่างอื่นจะอ่านอะไรก็ตามที่ได้อ่านบนstdout
( แต่เราไม่ได้ทำอย่างนั้นด้วยls
ล่ะค่ะเราทำ?)