บทที่ 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 หมายความว่าอะไรลองค้นหาในอินเตอร์เน็ตดูนะครับ