บทที่ 14

Pipes ส่งผ่านผลลัพธ์ไปอีกคำสั่ง ( | )

หนึ่งในเสน่ห์อย่างหนึ่งในการทำงานผ่าน CLI คือเรากำลังบอกให้คอมพิวเตอร์ทำงานที่เราต้องการด้วยภาษาสัญลักษณ์ที่เข้าใจง่าย ตรงไปตรงมา ในแต่ละคำสั่งทำงานหนึ่งอย่างตามที่เราต้องการ แล้วถ้างานที่เราต้องการมันไม่จบในคำสั่งเดียวหละ?

ใน Unix/Linux command-line มีวิธีการหนึ่งที่เรียกว่า “Pipeline” เป็นการส่งผ่านผลลัพธ์ของคำสั่งหนึ่งไปให้อีกคำสั่งหนึ่งประมวลผลต่อ อุปมาได้ว่าเป็นการ “ต่อท่อ (Pipes)” ส่งผ่านข้อมูลจากคำสั่งหนึ่งไปอีกคำสั่งหนึ่ง ประมาณนั้น

แบบฝึกหัด

 1 $ cd ~/learncli
 2 $ ls
 3 cat.txt  copydir  fox.txt  movedir  right  toolong.txt
 4 
 5 $ cat fox.txt cat.txt toolong.txt
 6 $ cat fox.txt cat.txt toolong.txt | more
 7 $ cat fox.txt cat.txt toolong.txt | less
 8 
 9 $ more fox.txt cat.txt toolong.txt | less
10 
11 $ ls -lR | more
12 $ ls -lR | less

บทนี้เรียนรู้อะไร?

  • เราใช้ | ในการส่งผ่าน Output ของ คำสั่งด้านซ้ายไปเป็น Input ให้กับคำสั่งด้านขวา

เพิ่มเติม

  • สำหรับผู้ใช้ Mac OS X ลอง $ cat fox.txt | say ดูครับ
  • ลองทำความเข้าใจกับคำสั่งนี้ดูนะครับ
    • $ cat fox.txt | tr " " "\n" | sort | wc -w
  • อย่าลืมว่าตอนนี้คุณรู้จักคำสั่ง man แล้วนะครับ
  • สำหรับคนที่ไม่รู้ว่า \n หมายความว่าอะไรลองค้นหาในอินเตอร์เน็ตดูนะครับ