<ก่อนหน้านี้ | Contents | ถัดไป>
แมว – ต่อไฟล์
การขอ แมว คำสั่งอ่านไฟล์ตั้งแต่หนึ่งไฟล์ขึ้นไปและคัดลอกไปยังเอาต์พุตมาตรฐานดังนี้:
แมว [ไฟล์...]
แมว [ไฟล์...]
ในกรณีส่วนใหญ่ คุณสามารถนึกถึง แมว ที่คล้ายคลึงกับ ประเภท คำสั่งในดอส คุณสามารถใช้เพื่อแสดงไฟล์โดยไม่ต้องเพจ ตัวอย่างเช่น:
[me@linuxbox ~]$ แมว ls-output.txt
[me@linuxbox ~]$ แมว ls-output.txt
จะแสดงเนื้อหาของไฟล์ ls-output.txt. แมว มักใช้เพื่อแสดงไฟล์ข้อความสั้น ตั้งแต่ แมว สามารถรับได้มากกว่าหนึ่งไฟล์เป็นอาร์กิวเมนต์ นอกจากนี้ยังสามารถใช้เพื่อรวมไฟล์เข้าด้วยกัน สมมติว่าเราได้ดาวน์โหลดไฟล์ขนาดใหญ่ที่ถูกแบ่งออกเป็นหลายส่วน (ไฟล์มัลติมีเดียมักจะถูกแยกในลักษณะนี้บน Usenet) และเราต้องการรวมกลับเข้าด้วยกัน หากชื่อไฟล์:
movie.mpeg.001 หนัง.mpeg.002 ... movie.mpeg.099
เราสามารถรวมกลับเข้าด้วยกันด้วยคำสั่งนี้:
cat movie.mpeg.0* > movie.mpeg
cat movie.mpeg.0* > movie.mpeg
เนื่องจากไวด์การ์ดจะขยายตามลำดับการเรียงลำดับเสมอ อาร์กิวเมนต์จะถูกจัดเรียงตามลำดับที่ถูกต้อง
ทั้งหมดนี้ดีและดี แต่สิ่งนี้เกี่ยวข้องกับอินพุตมาตรฐานอย่างไร ยังไม่มี แต่ขอลองอย่างอื่น จะเกิดอะไรขึ้นหากเราป้อน "cat" โดยไม่มีข้อโต้แย้ง:
[me@linuxbox ~]$ แมว
[me@linuxbox ~]$ แมว
ไม่มีอะไรเกิดขึ้น มันแค่นั่งอยู่ตรงนั้นเหมือนถูกแขวนไว้ มันอาจจะดูเหมือนเป็นแบบนั้น แต่จริงๆ แล้วมันก็ทำในสิ่งที่ควรจะเป็นจริงๆ
If แมว ไม่มีการโต้แย้งใด ๆ มันอ่านจากอินพุตมาตรฐานและเนื่องจากอินพุตมาตรฐานติดอยู่กับแป้นพิมพ์โดยค่าเริ่มต้นจึงรอให้เราพิมพ์อะไรบางอย่าง! ลองเพิ่มข้อความต่อไปนี้แล้วกด Enter:
การเปลี่ยนเส้นทางอินพุตมาตรฐาน
[me@linuxbox ~]$ แมว
สุนัขจิ้งจอกสีน้ำตาลได้อย่างรวดเร็วเพิ่มขึ้นกว่าสุนัขขี้เกียจ.
[me@linuxbox ~]$ แมว
สุนัขจิ้งจอกสีน้ำตาลได้อย่างรวดเร็วเพิ่มขึ้นกว่าสุนัขขี้เกียจ.
ถัดไป พิมพ์ a Ctrl-d (เช่น กดปุ่ม Ctrl ค้างไว้แล้วกด “d”) เพื่อบอก แมว ที่มันมาถึง ท้ายไฟล์ (EOF) ที่อินพุตมาตรฐาน:
[me@linuxbox ~]$ แมว
สุนัขจิ้งจอกสีน้ำตาลได้อย่างรวดเร็วเพิ่มขึ้นกว่าสุนัขขี้เกียจ.
สุนัขจิ้งจอกสีน้ำตาลได้อย่างรวดเร็วเพิ่มขึ้นกว่าสุนัขขี้เกียจ.
[me@linuxbox ~]$ แมว
สุนัขจิ้งจอกสีน้ำตาลได้อย่างรวดเร็วเพิ่มขึ้นกว่าสุนัขขี้เกียจ.
สุนัขจิ้งจอกสีน้ำตาลได้อย่างรวดเร็วเพิ่มขึ้นกว่าสุนัขขี้เกียจ.
ในกรณีที่ไม่มีอาร์กิวเมนต์ชื่อไฟล์ แมว คัดลอกอินพุตมาตรฐานไปยังเอาต์พุตมาตรฐาน ดังนั้นเราจึงเห็นบรรทัดข้อความซ้ำ เราสามารถใช้พฤติกรรมนี้เพื่อสร้างไฟล์ข้อความสั้น สมมติว่าเราต้องการสร้างไฟล์ชื่อ “lazy_dog.txt” ที่มีข้อความในตัวอย่างของเรา เราจะทำสิ่งนี้:
[me@linuxbox ~]$ แมว > lazy_dog.txt
สุนัขจิ้งจอกสีน้ำตาลได้อย่างรวดเร็วเพิ่มขึ้นกว่าสุนัขขี้เกียจ.
[me@linuxbox ~]$ แมว > lazy_dog.txt
สุนัขจิ้งจอกสีน้ำตาลได้อย่างรวดเร็วเพิ่มขึ้นกว่าสุนัขขี้เกียจ.
พิมพ์คำสั่งตามด้วยข้อความที่เราต้องการจะใส่ลงในไฟล์ อย่าลืมพิมพ์ Ctrl-d ในตอนท้าย ด้วยการใช้บรรทัดคำสั่ง เราได้ติดตั้งโปรแกรมประมวลผลคำที่โง่ที่สุดในโลก! เห็นผลเราใช้ แมว ในการคัดลอกไฟล์ไปที่ stdout อีกครั้ง:
[me@linuxbox ~]$ แมว lazy_dog.txt
สุนัขจิ้งจอกสีน้ำตาลได้อย่างรวดเร็วเพิ่มขึ้นกว่าสุนัขขี้เกียจ.
[me@linuxbox ~]$ แมว lazy_dog.txt
สุนัขจิ้งจอกสีน้ำตาลได้อย่างรวดเร็วเพิ่มขึ้นกว่าสุนัขขี้เกียจ.
ตอนนี้เรารู้แล้วว่า แมว ยอมรับอินพุตมาตรฐาน นอกเหนือจากอาร์กิวเมนต์ชื่อไฟล์ ให้ลองเปลี่ยนเส้นทางอินพุตมาตรฐาน:
[me@linuxbox ~]$ แมว < lazy_dog.txt
สุนัขจิ้งจอกสีน้ำตาลได้อย่างรวดเร็วเพิ่มขึ้นกว่าสุนัขขี้เกียจ.
[me@linuxbox ~]$ แมว < lazy_dog.txt
สุนัขจิ้งจอกสีน้ำตาลได้อย่างรวดเร็วเพิ่มขึ้นกว่าสุนัขขี้เกียจ.
ใช้ตัวดำเนินการเปลี่ยนเส้นทาง "<" เราเปลี่ยนแหล่งที่มาของอินพุตมาตรฐานจากแป้นพิมพ์เป็นไฟล์ Lazy_dog.txt. เราเห็นว่าผลลัพธ์เหมือนกับการส่งอาร์กิวเมนต์ชื่อไฟล์เดียว สิ่งนี้ไม่มีประโยชน์อย่างยิ่งเมื่อเปรียบเทียบกับการส่งอาร์กิวเมนต์ชื่อไฟล์ แต่ใช้เพื่อสาธิตการใช้ไฟล์เป็นแหล่งของอินพุตมาตรฐาน คำสั่งอื่นๆ ใช้อินพุตมาตรฐานได้ดีขึ้น ดังที่เราจะได้เห็นในเร็วๆ นี้
ก่อนที่เราจะไปต่อ ตรวจสอบหน้าคนสำหรับ แมวเนื่องจากมีตัวเลือกที่น่าสนใจหลายประการ