<ก่อนหน้านี้ | Contents | ถัดไป>
การเปลี่ยนเส้นทางเอาต์พุตมาตรฐานและข้อผิดพลาดมาตรฐานไปยังไฟล์เดียว
มีหลายกรณีที่เราอาจต้องการจับภาพผลลัพธ์ทั้งหมดของคำสั่งเป็นไฟล์เดียว ในการดำเนินการนี้ เราต้องเปลี่ยนเส้นทางทั้งเอาต์พุตมาตรฐานและข้อผิดพลาดมาตรฐานพร้อมกัน มีสองวิธีในการทำเช่นนี้ อย่างแรก วิธีดั้งเดิมซึ่งใช้งานได้กับเวอร์ชันเก่าของเชลล์:
[me@linuxbox ~]$ ls -l /bin/usr > ls-output.txt 2>&1
[me@linuxbox ~]$ ls -l /bin/usr > ls-output.txt 2>&1
เมื่อใช้วิธีนี้ เราทำการเปลี่ยนเส้นทางสองครั้ง ก่อนอื่นเราเปลี่ยนเส้นทางเอาต์พุตมาตรฐานไปยังไฟล์ ls-output.txt จากนั้นเราเปลี่ยนเส้นทาง file descriptor 2 (ข้อผิดพลาดมาตรฐาน) ไปยัง file descriptor one (เอาต์พุตมาตรฐาน) โดยใช้สัญกรณ์ 2> & 1.
ขอให้สังเกตว่าลำดับของการเปลี่ยนเส้นทางมีความสำคัญ การเปลี่ยนเส้นทางของข้อผิดพลาดมาตรฐานต้องเกิดขึ้นเสมอ หลังจาก เปลี่ยนเส้นทางเอาต์พุตมาตรฐานหรือไม่ทำงาน ในตัวอย่างข้างต้น
>ls-output.txt 2>&1
เปลี่ยนเส้นทางข้อผิดพลาดมาตรฐานไปยังไฟล์ ls-output.txtแต่หากเปลี่ยนลำดับเป็น
2>&1 >ls-output.txt
ข้อผิดพลาดมาตรฐานถูกส่งไปยังหน้าจอ
เวอร์ชันล่าสุดของ ทุบตี ให้วิธีที่สองที่คล่องตัวมากขึ้นในการดำเนินการนี้
ข้อผิดพลาดมาตรฐานการเปลี่ยนเส้นทาง
การเปลี่ยนเส้นทางแบบรวม:
[me@linuxbox ~]$ ls -l /bin/usr &> ls-output.txt
[me@linuxbox ~]$ ls -l /bin/usr &> ls-output.txt
ในตัวอย่างนี้ เราใช้สัญกรณ์เดียว &> เพื่อเปลี่ยนเส้นทางทั้งเอาต์พุตมาตรฐานและข้อผิดพลาดมาตรฐานไปยังไฟล์ ls-output.txt. คุณยังสามารถผนวกเอาต์พุตมาตรฐานและสตรีมข้อผิดพลาดมาตรฐานเข้ากับไฟล์เดียวได้ดังนี้:
[me@linuxbox ~]$ ls -l /bin/usr &>> ls-output.txt
[me@linuxbox ~]$ ls -l /bin/usr &>> ls-output.txt