ค้นหาเว็บไซต์

10 ตัวดำเนินการเชื่อมโยงที่มีประโยชน์ใน Linux พร้อมตัวอย่าง


การผูกมัดคำสั่ง Linux หมายถึงการรวมคำสั่งต่างๆ เข้าด้วยกันและทำให้คำสั่งเหล่านั้นดำเนินการตามพฤติกรรมของผู้ปฏิบัติงานที่ใช้ในระหว่างคำสั่งเหล่านั้น

การเชื่อมโยงคำสั่งใน Linux เป็นเหมือนคุณกำลังเขียนสคริปต์เชลล์แบบสั้นที่ตัวเชลล์เอง และดำเนินการคำสั่งเหล่านั้นจากเทอร์มินัลโดยตรง การผูกมัดทำให้กระบวนการเป็นอัตโนมัติได้

นอกจากนี้ เครื่องจักรแบบอัตโนมัติยังสามารถทำงานได้อย่างเป็นระบบด้วยความช่วยเหลือจากผู้ควบคุมการต่อสายโซ่

บทความนี้มีจุดมุ่งหมายเพื่อให้ความกระจ่างเกี่ยวกับตัวดำเนินการเชื่อมต่อคำสั่งที่ใช้บ่อย โดยให้คำอธิบายสั้นๆ และตัวอย่างที่เกี่ยวข้องซึ่งสามารถเพิ่มประสิทธิภาพการทำงานของคุณได้ และช่วยให้คุณสามารถเขียนโค้ดที่กระชับและมีความหมายในขณะที่ลดภาระของระบบในบางครั้ง

1. ตัวดำเนินการเครื่องหมายและ (&) – เรียกใช้คำสั่ง Linux ในพื้นหลัง

ฟังก์ชั่นของ '&' คือการทำให้คำสั่งทำงานในพื้นหลัง เพียงพิมพ์คำสั่งตามด้วยช่องว่างและ '&' คุณสามารถดำเนินการได้มากกว่าหนึ่งคำสั่งในเบื้องหลังในคราวเดียว

เรียกใช้คำสั่ง Linux เดียวที่เรียกว่า 'ping' ในเบื้องหลัง:

ping -­c5 linux-console.net &

รันคำสั่ง apt สองคำสั่งหรือหลายคำสั่งในเบื้องหลังพร้อมกัน:

apt update & apt upgrade &

2. ตัวดำเนินการเซมิโคลอน (;) – เรียกใช้หลายคำสั่ง

ตัวดำเนินการเซมิโคลอน (;) ทำให้สามารถรันได้ หลายคำสั่งในครั้งเดียว และการดำเนินการของคำสั่งเกิดขึ้นตามลำดับ

apt update ; apt upgrade ; mkdir test

การรวมคำสั่งข้างต้นจะดำเนินการตามคำสั่ง อัปเดต ก่อน จากนั้นตามด้วยคำสั่ง อัปเกรด และสุดท้ายจะสร้างไดเร็กทอรี 'test' ใต้ไดเร็กทอรีการทำงานปัจจุบัน

3. และตัวดำเนินการ (&&) – เรียกใช้คำสั่งที่สองเมื่อสำเร็จ

ตัวดำเนินการ AND (&&) จะดำเนินการคำสั่งที่สองเท่านั้น หากการดำเนินการของคำสั่งแรก SUCCEEDS กล่าวคือ สถานะการออกของ คำสั่งแรกคือ 0 คำสั่งนี้มีประโยชน์มากในการตรวจสอบสถานะการดำเนินการของคำสั่งสุดท้าย

ตัวอย่างเช่น ฉันต้องการเยี่ยมชมเว็บไซต์ linux-console.net โดยใช้คำสั่ง links ในเทอร์มินัล แต่ก่อนหน้านั้น ฉันต้องตรวจสอบว่าโฮสต์ ใช้งานอยู่ หรือ >ไม่

ping -c3 linux-console.net && links linux-console.net

4. หรือตัวดำเนินการ (||) – การดำเนินการคำสั่งแบบมีเงื่อนไข

OR Operator (||) มีลักษณะคล้ายกับคำสั่ง 'else' ในการเขียนโปรแกรม ตัวดำเนินการ || ช่วยให้คุณสามารถดำเนินการคำสั่งที่สองได้ก็ต่อเมื่อการดำเนินการของคำสั่งแรกล้มเหลว กล่าวคือ สถานะการออกของคำสั่งแรกคือ '1'

ตัวอย่างเช่น ฉันต้องการดำเนินการ 'apt update' จากบัญชีที่ไม่ใช่รูท และหากคำสั่งแรกล้มเหลว คำสั่งที่สอง 'links linux-console.net' จะดำเนินการ

apt update || links linux-console.net

ในคำสั่งข้างต้น เนื่องจาก ผู้ใช้ ไม่ได้รับอนุญาตให้ อัปเดต ระบบ หมายความว่าสถานะการออกของคำสั่งแรกคือ '1' และด้วยเหตุนี้คำสั่งสุดท้าย 'links linux-console.net' จึงถูกดำเนินการ

จะเกิดอะไรขึ้นหากดำเนินการคำสั่งแรกได้สำเร็จ โดยมีสถานะออก '0' อย่างชัดเจน! คำสั่งที่สองจะไม่ทำงาน

mkdir test || links linux-console.net

ที่นี่ ผู้ใช้สร้างโฟลเดอร์ 'ทดสอบ' ในโฮมไดเร็กตอรี่ของเขา ซึ่งผู้ใช้จะได้รับอนุญาต คำสั่งดำเนินการสำเร็จโดยให้สถานะทางออก '0' และด้วยเหตุนี้ส่วนสุดท้ายของคำสั่งจึงไม่ถูกดำเนินการ

5. ไม่ใช่ตัวดำเนินการ (!) – การดำเนินการคำสั่งแบบเลือก

ไม่ใช่ตัวดำเนินการ (!) มีลักษณะคล้ายกับคำสั่ง 'ยกเว้น' คำสั่งนี้จะดำเนินการทั้งหมดยกเว้นเงื่อนไขที่ให้ไว้ เพื่อให้เข้าใจสิ่งนี้ ให้สร้างไดเร็กทอรี 'tecmint' ในโฮมไดเร็กตอรี่ของคุณ และ 'cd' ลงไป

mkdir tecmint 
cd tecmint

จากนั้น สร้างไฟล์หลายประเภทในโฟลเดอร์ 'tecmint'

touch a.doc b.doc a.pdf b.pdf a.xml b.xml a.html b.html

ดูว่าเราได้สร้างไฟล์ใหม่ทั้งหมดภายในโฟลเดอร์ 'tecmint'

ls 

a.doc  a.html  a.pdf  a.xml  b.doc  b.html  b.pdf  b.xml

ตอนนี้ลบไฟล์ทั้งหมดยกเว้นไฟล์ 'html' ทั้งหมดพร้อมกันอย่างชาญฉลาดโดยใช้คำสั่ง rm

rm -r !(*.html)

เพียงเพื่อตรวจสอบการดำเนินการครั้งล่าสุด แสดงรายการไฟล์ที่มีอยู่ทั้งหมดโดยใช้คำสั่ง ls

ls 

a.html  b.html

6. และ – หรือตัวดำเนินการ (&& – ||) – การดำเนินการคำสั่งแบบมีเงื่อนไข

ตัวดำเนินการข้างต้นคือการรวมกันของตัวดำเนินการ 'AND' และ 'OR' มันเหมือนกับคำสั่ง 'if-else' มาก

ตัวอย่างเช่น ลองส่ง Ping ไปยัง linux-console.net หากสำเร็จเป็น 'ยืนยันแล้ว' มิฉะนั้นจะสะท้อน 'Host Down'

ping -c3 linux-console.net && echo "Verified" || echo "Host Down"

ผลลัพธ์ตัวอย่าง:

PING linux-console.net (212.71.234.61) 56(84) bytes of data. 
64 bytes from linux-console.net (212.71.234.61): icmp_req=1 ttl=55 time=216 ms 
64 bytes from linux-console.net (212.71.234.61): icmp_req=2 ttl=55 time=224 ms 
64 bytes from linux-console.net (212.71.234.61): icmp_req=3 ttl=55 time=226 ms 

--- linux-console.net 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

ตอนนี้ ยกเลิกการเชื่อมต่ออินเทอร์เน็ตของคุณ แล้วลองใช้คำสั่งเดิมอีกครั้ง

ping -c3 linux-console.net && echo "verified" || echo "Host Down"

ผลลัพธ์ตัวอย่าง:

ping: unknown host linux-console.net 
Host Down

7. PIPE Operator (|) – การประมวลผลเอาต์พุตที่คล่องตัว

ตัวดำเนินการ PIPE นี้มีประโยชน์มากโดยที่เอาต์พุตของคำสั่งแรกทำหน้าที่เป็นอินพุตของคำสั่งที่สอง ตัวอย่างเช่น ไปป์ไลน์เอาต์พุตของ 'ls -l' ถึง 'less' และดูผลลัพธ์ของคำสั่ง

ls -l | less

drwx------  tecmint tecmint  4.0 KB Thu Nov 16 12:03:02 2023 AnyDesk
drwxrwxr-x  tecmint tecmint  4.0 KB Tue Oct 10 10:44:35 2023 bin
drwxr-xr-x  root    root     4.0 KB Wed Nov 24 22:05:09 2021 DEBIAN
drwxrwxr-x  tecmint tecmint  4.0 KB Sat Nov 18 12:32:49 2023 Desktop
drwx--x---+ tecmint tecmint  100 KB Fri Dec  8 12:00:49 2023 Downloads
drwxrwxr-x  tecmint tecmint  4.0 KB Wed Sep 13 10:25:07 2023 llpp
drwxrwxr-x  tecmint tecmint  4.0 KB Thu Nov 16 14:26:46 2023 MyImages
drwxrwxr-x  tecmint tecmint  4.0 KB Wed Sep 13 14:55:42 2023 Obsidian Vault
drwxrwxr-x  tecmint tecmint  4.0 KB Tue Oct 10 10:44:32 2023 opt
drwxrwxr-x  tecmint tecmint  4.0 KB Thu Nov 16 14:46:54 2023 php
drwxrwxr-x  tecmint tecmint  4.0 KB Thu Nov 16 15:54:33 2023 tar_examples
.rw-rw-r--  tecmint tecmint   73 KB Mon Sep 18 11:46:02 2023 Apache-Web-Server-Security.png
.rw-rw-r--  tecmint tecmint  2.2 KB Sun Oct 29 00:17:15 2023 ChatGPT-SEO-Prompts
.rw-rw-r--  tecmint tecmint   41 KB Thu Nov 23 11:34:33 2023 Create-Users-in-Linux.png
...

8. ตัวดำเนินการรวมคำสั่ง {}

รวมคำสั่งตั้งแต่สองคำสั่งขึ้นไป คำสั่งที่สองจะขึ้นอยู่กับการดำเนินการของคำสั่งแรก

ตัวอย่างเช่น ตรวจสอบว่าไดเร็กทอรี 'bin' พร้อมใช้งานหรือไม่ และเอาต์พุตเอาต์พุตที่เกี่ยวข้อง

[ -d bin ] || { echo Directory does not exist, creating directory now.; mkdir bin; } && echo Directory exists.

9. ตัวดำเนินการที่มีความสำคัญ() – การจัดการลำดับการดำเนินการตามคำสั่ง

ตัวดำเนินการ () ทำให้สามารถดำเนินการคำสั่งตามลำดับได้

Command_x1 &&Command_x2 || Command_x3 && Command_x4.

ในคำสั่งหลอกข้างต้น จะเกิดอะไรขึ้นหาก Command_x1 ล้มเหลว Command_x2, Command_x3, Command_x4 จะไม่ดำเนินการใดๆ ในการดำเนินการนี้ เราใช้ ตัวดำเนินการที่มีความสำคัญ เป็น:

(Command_x1 &&Command_x2) || (Command_x3 && Command_x4)

ในคำสั่งหลอกข้างต้น หาก Command_x1 ล้มเหลว Command_x2 ก็ล้มเหลวเช่นกัน แต่ยังคง Command_x3 และ Command_x4 ดำเนินการ ขึ้นอยู่กับ สถานะการออกของ Command_x3

10. ตัวดำเนินการต่อข้อมูล (\) – การต่อข้อมูลคำสั่งหลายบรรทัด

ตัวดำเนินการต่อข้อมูล (\) ตามชื่อที่ระบุ ใช้เพื่อเชื่อมคำสั่งขนาดใหญ่เข้ากับหลายบรรทัดในเชลล์ ตัวอย่างเช่น คำสั่งด้านล่างจะเปิดไฟล์ข้อความ test(1).txt

nano test\(1\).txt

นั่นคือทั้งหมดที่สำหรับตอนนี้. ฉันกำลังจะพบกับบทความที่น่าสนใจอีกบทความเร็ว ๆ นี้ จนกว่าจะถึงตอนนั้น คอยติดตาม มีสุขภาพแข็งแรง และเชื่อมต่อกับ Tecmint อย่าลืมให้ข้อเสนอแนะอันมีค่าของคุณในส่วนความคิดเห็นของเรา