<ก่อนหน้านี้ | Contents | ถัดไป>
พฤ 28 ก.พ. 20:23:07 น. CET 2002
การขอ ข้อมูล คำสั่งปกติจะวางบรรทัดสุดท้ายบนหน้าจอ ตอนนี้มันถูกผนวกเข้ากับไฟล์ สิ่งที่อยากได้.
5.2. คุณสมบัติการเปลี่ยนเส้นทางขั้นสูง
5.2.1. การใช้ตัวอธิบายไฟล์
I/O มีสามประเภท ซึ่งแต่ละ I/O มีตัวระบุของตัวเอง เรียกว่า file descriptor:
• อินพุตมาตรฐาน: 0
• เอาต์พุตมาตรฐาน: 1
• ข้อผิดพลาดมาตรฐาน: 2
ในคำอธิบายต่อไปนี้ หากละเว้นหมายเลขตัวอธิบายไฟล์ และอักขระตัวแรกของตัวดำเนินการเปลี่ยนเส้นทางคือ < การเปลี่ยนเส้นทางจะอ้างอิงถึงอินพุตมาตรฐาน (file descriptor 0) ถ้าอักขระตัวแรกของตัวดำเนินการเปลี่ยนเส้นทางคือ > การเปลี่ยนเส้นทางจะอ้างอิงถึงเอาต์พุตมาตรฐาน (file descriptor 1)
ตัวอย่างที่ใช้งานได้จริงจะทำให้สิ่งนี้ชัดเจนยิ่งขึ้น:
ls> ไดร์ลิสต์ 2> & 1
จะส่งทั้งเอาต์พุตมาตรฐานและข้อผิดพลาดมาตรฐานไปยังไฟล์ ไดร์ลิสต์ในขณะที่คำสั่ง
ls 2>&1 > ไดร์ลิสต์
จะส่งตรงเอาต์พุตมาตรฐานไปที่ .เท่านั้น ไดร์ลิสต์. นี่อาจเป็นตัวเลือกที่มีประโยชน์สำหรับโปรแกรมเมอร์
สิ่งต่างๆ เริ่มซับซ้อนขึ้นที่นี่ อย่าสับสนระหว่างการใช้เครื่องหมายและที่นี่กับการใช้ในหัวข้อ 4.1.2.1 ซึ่งเครื่องหมายและใช้เพื่อเรียกใช้กระบวนการในเบื้องหลัง ในที่นี้ เป็นเพียงเครื่องบ่งชี้ว่าตัวเลขที่ตามมาไม่ใช่ชื่อไฟล์ แต่เป็นตำแหน่งที่สตรีมข้อมูลชี้ไป โปรดทราบด้วยว่าเครื่องหมายที่ใหญ่กว่าไม่ควรคั่นด้วยช่องว่างจากหมายเลขของตัวอธิบายไฟล์ ถ้ามันจะถูกแยกออก เราจะชี้เอาท์พุตไปยังไฟล์อีกครั้ง ตัวอย่างด้านล่างแสดงให้เห็นสิ่งนี้:
[แนนซี่@asus /var/tmp]$ ls 2> tmp
[แนนซี่@asus /var/tmp]$ ls -l ทีเอ็มพี
-rw-rw-r-- 1 แนนซี่ แนนซี่ 0 กันยายน 7:12 น.
[แนนซี่@asus /var/tmp]$ ls 2 > tmp
ls: 2: ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว
[แนนซี่@asus /var/tmp]$ ls 2> tmp
[แนนซี่@asus /var/tmp]$ ls -l ทีเอ็มพี
-rw-rw-r-- 1 แนนซี่ แนนซี่ 0 กันยายน 7:12 น.
[แนนซี่@asus /var/tmp]$ ls 2 > tmp
ls: 2: ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว
คำสั่งแรกที่ แนนซี่ การดำเนินการถูกต้อง (แม้ว่าจะไม่มีการสร้างข้อผิดพลาด ดังนั้นไฟล์ที่มีการเปลี่ยนเส้นทางข้อผิดพลาดมาตรฐานจะว่างเปล่า) คำสั่งที่สองคาดว่า 2 เป็นชื่อไฟล์ ซึ่งในกรณีนี้ไม่มีอยู่ จึงมีการแสดงข้อผิดพลาด
คุณสมบัติทั้งหมดเหล่านี้มีการอธิบายโดยละเอียดในหน้า Bash Info