Stderr คืออะไร

Stderr หรือที่เรียกว่า ข้อผิดพลาดมาตรฐาน เป็นตัวบ่งชี้ไฟล์เริ่มต้นที่กระบวนการสามารถเขียนข้อความผิดพลาด

ในระบบปฏิบัติการที่คล้าย 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': การอนุญาตถูกปฏิเสธ 

สำหรับข้อมูลโดยละเอียดเกี่ยวกับวิธีการเปลี่ยนเส้นทางสตรีมข้อมูลดูการเปลี่ยนเส้นทางในทุบตี

ข้อความแสดงข้อผิดพลาดข้อกำหนดของระบบปฏิบัติการ