Tag Archive Chaining

Byphunsanit

Command Chaining เชื่อมคำสั่ง

การเชื่อมคำสั่ง (Command Chaining) หรือการ join เป็นเทคนิคที่ช่วยให้เราสั่งงานคอมพิวเตอร์หลายๆ อย่างได้ใน termimal บรรทัดเดียว ซึ่งช่วยประหยัดเวลาและทำให้การเขียน Script มีประสิทธิภาพมากครับ นี่คือเครื่องหมายหลักๆ ที่ใช้บ่อยที่สุด พร้อมตัวอย่างการใช้งานครับ (ใช้ได้ทั้ง Linux, macOS และ Windows PowerShell ส่วนใหญ่ครับ)


เครื่องหมาย ; (ทำต่อกันทันที)

คอนเซปต์: “ทำคำสั่งแรกเสร็จ แล้วทำคำสั่งสองต่อเลย ไม่สนว่าคำสั่งแรกจะผ่านหรือพัง”
ใช้เมื่อ: คำสั่งที่ 2 ไม่ได้ขึ้นอยู่กับผลลัพธ์ของคำสั่งที่ 1
echo "เริ่มทำงาน"; ls -la; echo "จบการทำงาน"
(ระบบจะพิมพ์ “เริ่มทำงาน” -> แล้วแสดงรายชื่อไฟล์ -> แล้วพิมพ์ “จบการทำงาน” ตามลำดับ)


เครื่องหมาย && (ทำเมื่อ สำเร็จ เท่านั้น)

คอนเซปต์: “ทำคำสั่งแรกก่อน ถ้า สำเร็จ (Success/Exit code 0) ค่อยทำคำสั่งสอง”
ใช้เมื่อ: คำสั่งที่ 2 จำเป็นต้องให้คำสั่งแรกผ่านก่อน เช่น สร้างโฟลเดอร์เสร็จแล้วค่อยเข้าไปข้างใน
mkdir my_project && cd my_project
(ถ้าสร้างโฟลเดอร์ my_project สำเร็จ ระบบจะ cd เข้าไปข้างในทันที แต่ถ้าสร้างไม่สำเร็จ เช่น พื้นที่เต็ม มันจะไม่รันคำสั่ง cd)


เครื่องหมาย || (ทำเมื่อ ล้มเหลว เท่านั้น)

คอนเซปต์: “ทำคำสั่งแรกก่อน ถ้า พัง (Error) ให้ทำคำสั่งสอง”
ใช้เมื่อ: ต้องการดักจับ Error หรือแจ้งเตือนเมื่อมีปัญหา
ping google.com || echo "อินเทอร์เน็ตมีปัญหา"
(ระบบจะลอง ping Google ถ้า ping ไม่เจอ (Error) มันจะพิมพ์ว่า “อินเทอร์เน็ตมีปัญหา” ออกมา)


เครื่องหมาย | (Pipe – ส่งต่อข้อมูล)

คอนเซปต์: “เอา ผลลัพธ์ (Output) ของคำสั่งแรก ส่งไปเป็น ข้อมูลเข้า (Input) ให้คำสั่งสอง”

คอนเซปต์: “เอา ผลลัพธ์ (Output) ของคำสั่งแรก ส่งไปเป็น ข้อมูลเข้า (Input) ให้คำสั่งสอง”
ใช้เมื่อ: ต้องการกรองข้อมูล หรือประมวลผลต่อ
cat access.log | grep "Error"
(อ่านไฟล์ access.log แล้วส่งข้อความทั้งหมดไปให้ grep คัดเลือกเฉพาะบรรทัดที่มีคำว่า “Error” ออกมาแสดง)


สรุปตารางเปรียบเทียบ

เครื่องหมายความหมายภาษาคนเงื่อนไขการทำงาน
;“แล้วก็…”ทำต่อเลย ไม่สนผลลัพธ์ก่อนหน้า
&&“ถ้าผ่าน ให้…”ทำต่อเมื่อคำสั่งหน้า สำเร็จ เท่านั้น
``
``“ส่งผลลัพธ์ให้…”

เทคนิคเสริม: การผสมคำสั่ง

คุณสามารถใช้เครื่องหมายเหล่านี้ผสมกันได้เพื่อให้ Logic ซับซ้อนขึ้นครับ

ตัวอย่าง: “ลองอัปเดตระบบ ถ้าสำเร็จให้บอกว่า Done แต่ถ้าพังให้บอกว่า Failed”
sudo apt update && echo "Done" || echo "Failed"


อ่านเพิ่มเติม