<ก่อนหน้านี้ | Contents | ถัดไป>
อย่างไรก็ตาม เนื่องจาก Linux เป็นระบบที่ยืดหยุ่น ค่าตั้งต้นเหล่านี้จึงไม่จำเป็นต้องใช้ เอาต์พุตมาตรฐาน ตัวอย่างเช่น บนเซิร์ฟเวอร์ที่มีการตรวจสอบอย่างหนักในสภาพแวดล้อมขนาดใหญ่ อาจเป็นเครื่องพิมพ์
5.1.2. ตัวดำเนินการเปลี่ยนเส้นทาง
5.1.2.1. การเปลี่ยนเส้นทางเอาต์พุตด้วย > และ |
บางครั้ง คุณอาจต้องการใส่ผลลัพธ์ของคำสั่งในไฟล์ หรือคุณอาจต้องการออกคำสั่งอื่นบนผลลัพธ์ของคำสั่งหนึ่ง สิ่งนี้เรียกว่าการเปลี่ยนเส้นทางเอาต์พุต การเปลี่ยนเส้นทางทำได้โดยใช้ ">" (มากกว่าสัญลักษณ์) หรือใช้ "|" (ไปป์) ตัวดำเนินการที่ส่งเอาต์พุตมาตรฐานของคำสั่งหนึ่งไปยังคำสั่งอื่นเป็นอินพุตมาตรฐาน
ดังที่เราเห็นก่อนหน้านี้ แมว คำสั่งเชื่อมไฟล์และรวมเข้าด้วยกันเป็นเอาต์พุตมาตรฐาน โดยการเปลี่ยนเส้นทางเอาต์พุตนี้ไปยังไฟล์ ชื่อไฟล์นี้จะถูกสร้างขึ้น - หรือเขียนทับหากมีอยู่แล้ว ดังนั้นโปรดใช้ความระมัดระวัง
แนนซี่:~> การทดสอบแมว1
บางคำ
แนนซี่:~> การทดสอบแมว2
บางคำ
แนนซี่:~> แมว test1 test2 > test3
แนนซี่:~> การทดสอบแมว3
บางคำ
แนนซี่:~> การทดสอบแมว1
บางคำ
แนนซี่:~> การทดสอบแมว2
บางคำ
แนนซี่:~> แมว test1 test2 > test3
แนนซี่:~> การทดสอบแมว3
บางคำ
บาง อื่น ๆ คำ
อย่าเขียนทับ!
ระวังอย่าเขียนทับไฟล์ที่มีอยู่ (สำคัญ) เมื่อเปลี่ยนเส้นทางเอาต์พุต เชลล์จำนวนมาก รวมถึง Bash มีคุณสมบัติในตัวเพื่อปกป้องคุณจากความเสี่ยงนั้น: โนคลอบเบอร์. ดูหน้าข้อมูลสำหรับข้อมูลเพิ่มเติม ใน Bash คุณต้องการเพิ่ม เซ็ต -o โนคลอบเบอร์ คำสั่งของคุณ .bashrc ไฟล์การกำหนดค่าเพื่อป้องกันการเขียนทับไฟล์โดยไม่ได้ตั้งใจ
การเปลี่ยนเส้นทาง "ไม่มีอะไร" ไปยังไฟล์ที่มีอยู่จะเท่ากับการล้างไฟล์:
แนนซี่:~> ls -l รายการ -rw-rw-r-- 1 แนนซี่ | แนนซี่ | 117 2 เม.ย. 18:09 รายการ |
แนนซี่:~> > รายการ | ||
แนนซี่:~> ls -l รายการ -rw-rw-r-- 1 แนนซี่ | แนนซี่ | 0 4 เม.ย. 12:01 รายการ |
กระบวนการนี้เรียกว่า ตัดทอน.
การเปลี่ยนเส้นทางเดียวกันไปยังไฟล์ที่ไม่มีอยู่จะสร้างไฟล์เปล่าใหม่ด้วยชื่อที่กำหนด:
แนนซี่:~> ls -l รายการใหม่
ls: รายการใหม่: ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว
แนนซี่:~> > รายการใหม่
แนนซี่:~> ls -l รายการใหม่
ls: รายการใหม่: ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว
แนนซี่:~> > รายการใหม่
แนนซี่:~> ls -l รายการใหม่
-rw-rw-r-- 1 แนนซี่ แนนซี่
0 เม.ย. 4:12 น. รายการใหม่
แนนซี่:~> ls -l รายการใหม่
-rw-rw-r-- 1 แนนซี่ แนนซี่
บทที่ 7 ให้ตัวอย่างเพิ่มเติมเกี่ยวกับการใช้การเปลี่ยนเส้นทางประเภทนี้ ตัวอย่างการใช้ไพพ์ของคำสั่ง:
หากต้องการค้นหาคำภายในข้อความ ให้แสดงบรรทัดทั้งหมดที่ตรงกับ "pattern1" และยกเว้นบรรทัดที่ตรงกับ "pattern2" ไม่ให้แสดง:
grep pattern1 ไฟล์ | เกรป -v pattern2
ในการแสดงผลลัพธ์ของไดเร็กทอรีที่แสดงรายการทีละหน้า:
ls - | น้อย
ในการค้นหาไฟล์ในไดเร็กทอรี:
ls -l | เกรป part_of_file_name
5.1.2.2. การเปลี่ยนเส้นทางอินพุต
ในอีกกรณีหนึ่ง คุณอาจต้องการให้ไฟล์เป็นอินพุตสำหรับคำสั่งที่ปกติแล้วจะไม่ยอมรับไฟล์เป็นตัวเลือก การเปลี่ยนเส้นทางอินพุตนี้ทำได้โดยใช้ตัวดำเนินการ "<" (น้อยกว่าสัญลักษณ์)
ด้านล่างนี้คือตัวอย่างการส่งไฟล์ให้ผู้อื่นโดยใช้การเปลี่ยนเส้นทางอินพุต
แอนดี้:~> อีเมล ไมค์@somewhere.org < ทำ
ถ้าผู้ใช้ ไมค์ มีอยู่ในระบบ คุณไม่จำเป็นต้องพิมพ์ที่อยู่แบบเต็ม หากคุณต้องการติดต่อใครสักคนบนอินเทอร์เน็ต ให้ป้อนที่อยู่แบบเต็มเป็นอาร์กิวเมนต์ของ อีเมล.
อ่านยากกว่าแมวมือใหม่นิดหน่อย ไฟล์ | จดหมาย บางคนแต่แน่นอนว่าเป็นวิธีที่หรูหรากว่ามากในการใช้เครื่องมือที่มี
5.1.2.3. รวมการเปลี่ยนเส้นทาง
ตัวอย่างต่อไปนี้รวมการเปลี่ยนเส้นทางอินพุตและเอาต์พุต ไฟล์ ข้อความ.txt จะถูกตรวจสอบก่อนการสะกดผิด และผลลัพธ์จะถูกเปลี่ยนเส้นทางไปยังไฟล์บันทึกข้อผิดพลาด:
สะกด ข้อความ.txt > error.log
คำสั่งต่อไปนี้แสดงรายการคำสั่งทั้งหมดที่คุณสามารถออกเพื่อตรวจสอบไฟล์อื่นเมื่อใช้ น้อยลง:
ไมค์:~> น้อย --help | grep -i ตรวจสอบ
:e [file] ตรวจสอบไฟล์ใหม่
:n * ตรวจสอบไฟล์ถัดไป (N-th) จากบรรทัดคำสั่ง
:p * ตรวจสอบไฟล์ก่อนหน้า (N-th) จากบรรทัดคำสั่ง
:x * ตรวจสอบไฟล์แรก (หรือ N-th) จากบรรทัดคำสั่ง
ไมค์:~> น้อย --help | grep -i ตรวจสอบ
:e [file] ตรวจสอบไฟล์ใหม่
:n * ตรวจสอบไฟล์ถัดไป (N-th) จากบรรทัดคำสั่ง
:p * ตรวจสอบไฟล์ก่อนหน้า (N-th) จากบรรทัดคำสั่ง
:x * ตรวจสอบไฟล์แรก (หรือ N-th) จากบรรทัดคำสั่ง
การขอ -i ตัวเลือกใช้สำหรับการค้นหาที่ไม่คำนึงถึงขนาดตัวพิมพ์ - โปรดจำไว้ว่าระบบ UNIX จะคำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ หากคุณต้องการบันทึกเอาต์พุตของคำสั่งนี้เพื่อใช้อ้างอิงในอนาคต ให้เปลี่ยนเส้นทางเอาต์พุตไปยังไฟล์:
ไมค์:~> น้อย --help | grep -i ตรวจสอบ > ตรวจสอบไฟล์ในน้อย
ไมค์:~> cat ตรวจสอบไฟล์ในน้อย
:e [file] ตรวจสอบไฟล์ใหม่
:n * ตรวจสอบไฟล์ถัดไป (N-th) จากบรรทัดคำสั่ง
:p * ตรวจสอบไฟล์ก่อนหน้า (N-th) จากบรรทัดคำสั่ง
:x * ตรวจสอบไฟล์แรก (หรือ N-th) จากบรรทัดคำสั่ง
ไมค์:~> น้อย --help | grep -i ตรวจสอบ > ตรวจสอบไฟล์ในน้อย
ไมค์:~> cat ตรวจสอบไฟล์ในน้อย
:e [file] ตรวจสอบไฟล์ใหม่
:n * ตรวจสอบไฟล์ถัดไป (N-th) จากบรรทัดคำสั่ง
:p * ตรวจสอบไฟล์ก่อนหน้า (N-th) จากบรรทัดคำสั่ง
:x * ตรวจสอบไฟล์แรก (หรือ N-th) จากบรรทัดคำสั่ง
เอาต์พุตของคำสั่งหนึ่งสามารถไพพ์ไปยังคำสั่งอื่นได้แทบหลายครั้งตามที่คุณต้องการ ตราบใดที่คำสั่งเหล่านี้โดยปกติจะอ่านอินพุตจากอินพุตมาตรฐานและเอาต์พุตการเขียนไปยังเอาต์พุตมาตรฐาน
บางครั้งก็ไม่เป็นเช่นนั้น แต่อาจมีอ็อพชันพิเศษที่สั่งให้คำสั่งเหล่านี้ทำงานตามคำจำกัดความมาตรฐาน ดังนั้นโปรดอ่านเอกสาร (หน้าคนและหน้าข้อมูล) ของคำสั่งที่คุณใช้หากคุณพบข้อผิดพลาด
ตรวจสอบให้แน่ใจว่าคุณไม่ได้ใช้ชื่อไฟล์ที่มีอยู่ซึ่งคุณยังต้องการอยู่ การเปลี่ยนเส้นทางเอาต์พุตไปยังไฟล์ที่มีอยู่จะแทนที่เนื้อหาของไฟล์เหล่านั้น
5.1.2.4. >> โอเปอเรเตอร์
แทนที่จะเขียนทับข้อมูลไฟล์ คุณยังสามารถเพิ่มข้อความต่อท้ายไฟล์ที่มีอยู่โดยใช้เครื่องหมายมากกว่าสองอันที่ตามมา:
ตัวอย่าง:
ไมค์:~> รายการที่อยากได้ของแมว
เงินมากขึ้นทำงานน้อยลง
ไมค์:~> วันที่ >> รายการสิ่งที่อยากได้
ไมค์:~> รายการที่อยากได้ของแมว
เงินมากขึ้นทำงานน้อยลง
ไมค์:~> วันที่ >> รายการสิ่งที่อยากได้
ไมค์:~> รายการที่อยากได้ของแมว
เงินมากขึ้นทำงานน้อยลง
พฤ 28 ก.พ. 20:23:07 น. CET 2002
ไมค์:~> รายการที่อยากได้ของแมว