การโยงคำสั่ง Linux หมายถึงการรวมคำสั่งต่างๆ เข้าด้วยกันและทำให้รันตามพฤติกรรมของโอเปอเรเตอร์ที่ใช้ระหว่างคำสั่งเหล่านั้น การโยงคำสั่งใน Linux นั้นเหมือนกับว่าคุณกำลังเขียนเชลล์สคริปต์แบบสั้นที่ตัวเชลล์เอง และดำเนินการจากเทอร์มินัลโดยตรง การผูกมัดทำให้กระบวนการเป็นไปโดยอัตโนมัติ ยิ่งไปกว่านั้น เครื่องจักรแบบไม่ต้องดูแลสามารถทำงานได้อย่างเป็นระบบมากด้วยความช่วยเหลือของตัวดำเนินการลูกโซ่
อ่านเพิ่มเติม: วิธีใช้ Awk และนิพจน์ทั่วไปเพื่อกรองข้อความในไฟล์
บทความนี้มีจุดมุ่งหมายเพื่อให้ความกระจ่างเกี่ยวกับตัวดำเนินการลูกโซ่คำสั่งที่ใช้บ่อย โดยมีคำอธิบายสั้น ๆ และตัวอย่างที่เกี่ยวข้องซึ่งจะเพิ่มประสิทธิภาพการทำงานของคุณอย่างแน่นอน และช่วยให้คุณเขียนโค้ดที่สั้นและมีความหมายนอกเหนือจากการลดการทำงานของระบบในบางครั้ง
1. เครื่องหมายและตัวดำเนินการ (&)
หน้าที่ของ '& ' คือการทำให้คำสั่งทำงานในพื้นหลัง เพียงพิมพ์คำสั่งตามด้วยช่องว่างและ '& '. คุณสามารถดำเนินการได้มากกว่าหนึ่งคำสั่งในเบื้องหลังในครั้งเดียว
เรียกใช้คำสั่งหนึ่งคำสั่งในเบื้องหลัง:
[email protected]:~$ ping c5 www.tecmint.com &
เรียกใช้สองคำสั่งในพื้นหลังพร้อมกัน:
[email protected]:/home/tecmint# apt-get update & apt-get upgrade &
2. ตัวดำเนินการเซมิโคลอน (;)
ตัวดำเนินการเซมิโคลอนทำให้สามารถรัน คำสั่งหลายคำสั่งในครั้งเดียว และการดำเนินการคำสั่งจะเกิดขึ้นตามลำดับ
[email protected]:/home/tecmint# apt-get update ; apt-get upgrade ; mkdir test
ชุดคำสั่งข้างต้นจะดำเนินการ อัปเดต . ก่อน คำแนะนำ แล้ว อัปเกรด คำสั่งและสุดท้ายจะสร้าง 'การทดสอบ ' ไดเร็กทอรีภายใต้ไดเร็กทอรีการทำงานปัจจุบัน
3. AND โอเปอเรเตอร์ (&&)
และตัวดำเนินการ (&& ) จะรันคำสั่งที่สองเท่านั้น ถ้าการดำเนินการของคำสั่งแรก SUCCEEDS กล่าวคือ สถานะการออกของคำสั่งแรกคือ 0 . คำสั่งนี้มีประโยชน์มากในการตรวจสอบสถานะการทำงานของคำสั่งสุดท้าย
ตัวอย่างเช่น ฉันต้องการเยี่ยมชมเว็บไซต์ tecmint.com ใช้คำสั่ง links ในเทอร์มินัล แต่ก่อนหน้านั้นฉันต้องตรวจสอบว่าโฮสต์ ใช้งานจริง หรือ ไม่ .
[email protected]:/home/tecmint# ping -c3 www.tecmint.com && links www.tecmint.com
4. หรือโอเปอเรเตอร์ (||)
ตัวดำเนินการ OR (|| ) เหมือนกับ 'อื่น ' คำสั่งในการเขียนโปรแกรม โอเปอเรเตอร์ข้างต้นอนุญาตให้คุณดำเนินการคำสั่งที่สองได้ก็ต่อเมื่อการดำเนินการคำสั่งแรกล้มเหลว กล่าวคือ สถานะการออกของคำสั่งแรกคือ '1 ‘.
ตัวอย่างเช่น ฉันต้องการเรียกใช้ 'apt-get update ' จากบัญชีที่ไม่ใช่รูท และหากคำสั่งแรกล้มเหลว คำสั่งที่สอง 'ลิงก์ www.tecmint.com ' คำสั่งจะดำเนินการ
[email protected]:~$ apt-get update || links tecmint.com
ในคำสั่งข้างต้น เนื่องจาก ผู้ใช้ ไม่ได้รับอนุญาตให้อัปเดต ระบบก็หมายความว่าสถานะการออกของคำสั่งแรกคือ ‘1’ และด้วยเหตุนี้คำสั่งสุดท้าย 'links tecmint.com ' ถูกประหารชีวิต
จะเกิดอะไรขึ้นหากคำสั่งแรกดำเนินการสำเร็จ โดยมีสถานะออก '0 '? อย่างชัดเจน! คำสั่งที่สองจะไม่ทำงาน
[email protected]:~$ mkdir test || links tecmint.com
ที่นี่ผู้ใช้สร้างโฟลเดอร์ 'ทดสอบ ' ในโฮมไดเร็กตอรี่ของเขา ซึ่งผู้ใช้ได้รับอนุญาต คำสั่งดำเนินการสำเร็จโดยให้สถานะออก '0 ' และด้วยเหตุนี้ส่วนสุดท้ายของคำสั่งจะไม่ถูกดำเนินการ
5. ไม่ใช่ตัวดำเนินการ (!)
ไม่ใช่ตัวดำเนินการ (! ) เหมือนกับ 'ยกเว้น ' คำแถลง. คำสั่งนี้จะดำเนินการทั้งหมดยกเว้นเงื่อนไขที่ให้ไว้ เพื่อให้เข้าใจสิ่งนี้ ให้สร้างไดเร็กทอรี 'tecmint ' ในโฮมไดเร็กตอรี่ของคุณและ 'cd 'เพื่อมัน
[email protected]:~$ mkdir tecmint [email protected]:~$ cd tecmint
ถัดไป สร้างไฟล์หลายประเภทในโฟลเดอร์ 'tecmint ‘.
[email protected]:~/tecmint$ touch a.doc b.doc a.pdf b.pdf a.xml b.xml a.html b.html
เห็นว่าเราได้สร้างไฟล์ใหม่ทั้งหมดภายในโฟลเดอร์ 'tecmint ‘.
[email protected]:~/tecmint$ ls a.doc a.html a.pdf a.xml b.doc b.html b.pdf b.xml
ตอนนี้ลบไฟล์ทั้งหมดยกเว้น 'html ' ไฟล์ทั้งหมดในครั้งเดียวอย่างชาญฉลาด
[email protected]:~/tecmint$ rm -r !(*.html)
เพียงเพื่อตรวจสอบการดำเนินการครั้งสุดท้าย แสดงรายการไฟล์ทั้งหมดที่มีโดยใช้คำสั่ง ls
[email protected]:~/tecmint$ ls a.html b.html
6. ตัวดำเนินการ AND – OR (&&– ||)
โอเปอเรเตอร์ข้างต้นเป็นการรวมกันของ 'AND ' และ 'หรือ 'โอเปอเรเตอร์. มันเหมือนกับ ‘if-else ' คำสั่ง
ตัวอย่างเช่น ลองทำ ping ไปที่ tecmint.com หากสำเร็จ echo ‘ยืนยันแล้ว ' else echo 'โฮสต์ลง ‘.
[email protected]:~/tecmint$ ping -c3 www.tecmint.com && echo "Verified" || echo "Host Down"
ตัวอย่างผลลัพธ์
PING www.tecmint.com (212.71.234.61) 56(84) bytes of data. 64 bytes from www.tecmint.com (212.71.234.61): icmp_req=1 ttl=55 time=216 ms 64 bytes from www.tecmint.com (212.71.234.61): icmp_req=2 ttl=55 time=224 ms 64 bytes from www.tecmint.com (212.71.234.61): icmp_req=3 ttl=55 time=226 ms --- www.tecmint.com ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2001ms rtt min/avg/max/mdev = 216.960/222.789/226.423/4.199 ms Verified
ตอนนี้ ยกเลิกการเชื่อมต่ออินเทอร์เน็ต แล้วลองใช้คำสั่งเดิมอีกครั้ง
[email protected]:~/tecmint$ ping -c3 www.tecmint.com && echo "verified" || echo "Host Down"
ตัวอย่างผลลัพธ์
ping: unknown host www.tecmint.com Host Down
7. ตัวดำเนินการท่อ (|)
ท่อนี้ โอเปอเรเตอร์มีประโยชน์มากเมื่อเอาต์พุตของคำสั่งแรกทำหน้าที่เป็นอินพุตของคำสั่งที่สอง ตัวอย่างเช่น ไปป์ไลน์ผลลัพธ์ของ 'ls -l ' เป็น 'น้อยกว่า ' และดูผลลัพธ์ของคำสั่ง
[email protected]:~$ ls -l | less
8. ตัวดำเนินการรวมคำสั่ง {}
รวมคำสั่งตั้งแต่สองคำสั่งขึ้นไป คำสั่งที่สองขึ้นอยู่กับการดำเนินการของคำสั่งแรก
ตัวอย่างเช่น ตรวจสอบว่าไดเร็กทอรี 'bin ' มีหรือไม่และส่งออกผลลัพธ์ที่สอดคล้องกัน
[email protected]:~$ [ -d bin ] || { echo Directory does not exist, creating directory now.; mkdir bin; } && echo Directory exists.
9. ตัวดำเนินการลำดับความสำคัญ ()
Operator ทำให้สามารถดำเนินการคำสั่งในลำดับความสำคัญได้
Command_x1 &&Command_x2 || Command_x3 && Command_x4.
ในคำสั่งหลอกด้านบน จะเกิดอะไรขึ้นถ้า Command_x1 ล้มเหลว? ไม่ใช่ Command_x2 , Command_x3 , Command_x4 จะดำเนินการ สำหรับสิ่งนี้เราใช้ Precedence Operator , เป็น:
(Command_x1 &&Command_x2) || (Command_x3 && Command_x4)
ในคำสั่งหลอกด้านบน ถ้า Command_x1 ล้มเหลว Command_x2 ยังล้มเหลว แต่ยังคง Command_x3 และ Command_x4 การดำเนินการขึ้นอยู่กับสถานะการออกของ Command_x3 .
10. ตัวดำเนินการต่อ (\)
ตัวดำเนินการเชื่อมต่อ (\ ) ตามชื่อที่ระบุ ใช้เพื่อเชื่อมคำสั่งขนาดใหญ่ในหลายบรรทัดในเชลล์ ตัวอย่างเช่น คำสั่งด้านล่างจะเปิดไฟล์ข้อความ test(1).txt .
[email protected]:~/Downloads$ nano test\(1\).txt
นั่นคือทั้งหมดที่สำหรับตอนนี้. ฉันมากับบทความที่น่าสนใจอื่นเร็ว ๆ นี้ จนกว่าจะถึงตอนนั้น คอยติดตาม มีสุขภาพดี และเชื่อมต่อกับ Tecmint . อย่าลืมให้ข้อเสนอแนะที่มีค่าของคุณในส่วนความคิดเห็นของเรา