ทุกกระบวนการใน Linux จะสร้างสตรีมข้อมูลสามแบบ stdin, stdout และ stderr:
- stdin : รับข้อมูลจากผู้ใช้ผ่านแป้นพิมพ์
- stdout : แสดงเอาต์พุตบนหน้าจอ
- stderr : แสดงข้อมูลข้อผิดพลาดบนหน้าจอ
ทุกสตรีมข้อมูลมีรหัสตัวเลข:
รหัสตัวเลข | ชื่อ |
0 | stdin |
1 | stdout |
2 | stderr |
มาอธิบายการเปลี่ยนเส้นทางอีกเล็กน้อยพร้อมรายละเอียด:
วิธีเปลี่ยนเส้นทางเอาต์พุตมาตรฐานและข้อผิดพลาดมาตรฐานใน Bash:
ในการเปลี่ยนเส้นทางเอาต์พุตมาตรฐานของคำสั่ง เราจะใช้ 1 กับตัวดำเนินการเปลี่ยนเส้นทางที่มากกว่าเครื่องหมาย >:
$ลส 1>stdout.txtคำสั่งดังกล่าวจะสร้างไฟล์และวางเอาต์พุตมาตรฐานของคำสั่ง ls ในไฟล์ stdout.txt
หากต้องการอ่านไฟล์ stdout.txt ให้ใช้:
$แมวstdout.txt
เราสามารถเปลี่ยนเส้นทางข้อผิดพลาดมาตรฐานไปยังไฟล์ได้เช่นกันโดยใช้คำสั่ง:
$แมวmyfile.txt2>stderr.txt
ในการดูไฟล์ stderr.txt ให้ใช้:
$แมวstderr.txt
ตรวจสอบให้แน่ใจว่าใช้ 2 จะมากกว่าเครื่องหมาย > เนื่องจากไม่มีไฟล์ myfile.txt ในไดเร็กทอรี คำสั่ง cat จะให้ข้อผิดพลาดที่จะต่อท้ายในไฟล์ stderr.txt
เอาต์พุตมาตรฐานเหล่านี้สามารถเปลี่ยนเส้นทางได้ด้วยคำสั่งเดียวเช่นกัน ใช้:
$ลส 1>stdout.txt2>stderr.txt
ผลลัพธ์ของคำสั่ง ls จะถูกเขียนในไฟล์ stdout.txt ไฟล์ แต่ stderr.txt จะยังคงว่างเปล่าเพราะจะไม่มีข้อผิดพลาด
ตอนนี้มาทำ stderr.txt:
$แมวmyfile.txt1>stdout.txt2>stderr.txt
ใช้คำสั่งด้านล่างเพื่ออ่าน stderr.txt
$แมวstderr.txt
และแน่นอน stdout.txt จะว่างเปล่า
บทสรุป :
คำสั่ง Linux เมื่อดำเนินการให้ผลลัพธ์มาตรฐานที่อาจเป็นผลลัพธ์ที่สำเร็จหรือข้อผิดพลาด โดยทั่วไปแล้ว เอาต์พุตเหล่านี้ไม่สามารถเปลี่ยนเส้นทางได้โดยใช้ตัวดำเนินการเปลี่ยนเส้นทาง เราจำเป็นต้องใช้รหัสตัวเลขเฉพาะกับเครื่องหมาย > ในคู่มือนี้ เราได้เรียนรู้วิธีใช้คีย์ตัวเลขเหล่านี้เพื่อเปลี่ยนเส้นทางเอาต์พุตมาตรฐานไปยังไฟล์พร้อมตัวอย่าง