ในระบบปฏิบัติการที่คล้าย Unix เช่น Linux, macOS X และ BSD stderr จะถูกกำหนดโดยมาตรฐาน POSIX หมายเลขตัวอธิบายไฟล์เริ่มต้นคือ 2
ในเทอร์มินัลข้อผิดพลาดมาตรฐานจะมีค่าเริ่มต้นเป็นหน้าจอของผู้ใช้
Stderr บนบรรทัดคำสั่ง Linux
ในทุบตีข้อผิดพลาดมาตรฐานสามารถเปลี่ยนเส้นทางในบรรทัดคำสั่ง การเปลี่ยนเส้นทาง stderr จะมีประโยชน์หากคุณต้องการจับข้อความข้อผิดพลาดใด ๆ ไปยังไฟล์บันทึกแยกต่างหากหรือซ่อนข้อความผิดพลาดทั้งหมด
ตัวอย่างเช่นพิจารณาคำสั่ง find ต่อไปนี้:
ค้นหา / - ชื่อ '* บางอย่าง *'
/ usr / share / doc / บางสิ่ง / usr / share / doc / บางสิ่ง / ตัวอย่าง / some_random find: `/ run / udisks2 ': การอนุญาตถูกปฏิเสธ find:` / run / wpa_supplicant': การอนุญาตถูกปฏิเสธ / usr / share / something / usr / เกม / บางสิ่งบางอย่าง
เราได้รับข้อผิดพลาดเนื่องจาก find กำลังพยายามค้นหาไดเรกทอรีระบบบางตัวที่เราไม่ได้รับอนุญาตให้อ่าน บรรทัดที่ระบุว่า "การอนุญาตที่ถูกปฏิเสธ" เป็นข้อความแสดงข้อผิดพลาดและถูกเขียนไปยัง stderr บรรทัดอื่นถูกเขียนไปที่ stdout (เอาต์พุตมาตรฐาน) โดยค่าเริ่มต้นพวกเขาทั้งสองแสดงบน terminal
ในการซ่อน stderr เราสามารถเปลี่ยนเส้นทางได้โดยอ้างอิงหมายเลขตัวอธิบายไฟล์ข้อผิดพลาดมาตรฐาน 2 และผู้ดำเนินการ "output output", >
find / -iname '* something *' 2> / dev / null
/ usr / share / doc / บางสิ่ง / usr / share / doc / บางอย่าง / ตัวอย่าง / something_random / usr / share / บางอย่าง / usr / เกม / บางอย่าง
ข้อผิดพลาดจะไม่แสดงอีกต่อไปเนื่องจากเอาต์พุตทั้งหมดไปยัง stderr ถูกเปลี่ยนเส้นทางไปยัง / dev / null อุปกรณ์พิเศษใน Linux ที่ "ไม่ไปไหนเลย"
เราสามารถเปลี่ยนเส้นทางข้อผิดพลาดทั้งหมดไปยังไฟล์:
find / -iname '* something *' 2> output.txt
/ usr / share / doc / บางสิ่ง / usr / share / doc / บางอย่าง / ตัวอย่าง / something_random / usr / share / บางอย่าง / usr / เกม / บางอย่าง
ตอนนี้หากคุณจับเนื้อหาของ output.txt คุณจะเห็นข้อความแสดงข้อผิดพลาดบันทึกอยู่ที่นั่น:
cat output.txt
ค้นหา: `/ run / udisks2 ': การอนุญาตถูกปฏิเสธ find:` / run / wpa_supplicant': การอนุญาตถูกปฏิเสธ
สำหรับข้อมูลโดยละเอียดเกี่ยวกับวิธีการเปลี่ยนเส้นทางสตรีมข้อมูลดูการเปลี่ยนเส้นทางในทุบตี
ข้อความแสดงข้อผิดพลาดข้อกำหนดของระบบปฏิบัติการ