ตัวดำเนินการ pipe(|) ใช้เพื่อเรียกใช้คำสั่งที่เกี่ยวข้องตั้งแต่สองคำสั่งขึ้นไปในแต่ละครั้ง อินพุตของคำสั่งถัดไปจะเป็นเอาต์พุตของคำสั่งก่อนหน้า ดังนั้น ความสำเร็จของแต่ละคำสั่งขึ้นอยู่กับความสำเร็จของคำสั่งก่อนหน้าโดยไม่มีคำสั่งแรก ในคำสั่งต่อไปนี้ คำสั่งแรก ลส จะค้นหารายการไฟล์และโฟลเดอร์ของตำแหน่งปัจจุบันและส่งเอาต์พุตเป็นอินพุตสำหรับคำสั่งที่สอง ห้องน้ำ . จะพิมพ์จำนวนบรรทัด คำ และอักขระทั้งหมดตามข้อมูลที่ป้อน
$ลส -NS | ห้องน้ำ โชคดี
อัฒภาค (;) ตัวดำเนินการ
ตัวดำเนินการ Semicolon(;) ใช้เพื่อเรียกใช้คำสั่งที่ไม่เกี่ยวข้องสองคำสั่งขึ้นไปในแต่ละครั้ง ซึ่งหมายความว่าผลลัพธ์ของแต่ละคำสั่งไม่ขึ้นอยู่กับคำสั่งอื่น ในตัวอย่างต่อไปนี้ คำสั่งสามประเภทจะถูกรวมเข้าด้วยกัน และความล้มเหลวของแต่ละคำสั่งจะไม่สร้างผลกระทบต่อผลลัพธ์ของคำสั่งอื่น คำสั่งแรกจะพิมพ์เนื้อหาของไฟล์ คำสั่งที่สองจะสร้างไดเร็กทอรี และคำสั่งที่สามจะเปลี่ยนไดเร็กทอรีปัจจุบัน
$แมวmyfile.txt ;mkdirนิวดีร์;ซีดีเดสก์ทอป
ตัวดำเนินการตรรกะและ (&&)
คำสั่งที่รันโดย Logical AND (&&) สัมพันธ์กันเช่นคำสั่ง pipe (|) ดังนั้น หากคำสั่งก่อนหน้านี้ไม่สามารถดำเนินการได้สำเร็จ คำสั่งถัดไปจะไม่ทำงาน ในตัวอย่างต่อไปนี้ สองคำสั่ง mkdir และ rmdir รวมกันโดยตัวดำเนินการ && ดังนั้นคำสั่ง mkdir จึงไม่สามารถดำเนินการได้สำเร็จ คำสั่ง rmdir จะไม่ดำเนินการ ตามผลลัพธ์ของคำสั่ง ls ไดเร็กทอรี myDir มีอยู่แล้วในตำแหน่งปัจจุบัน ดังนั้นคำสั่งแรกจะไม่ดำเนินการและสำหรับคำสั่งที่สองนี้จะไม่ดำเนินการด้วย
$ลส$mkdirmyDir&& rmdirอุณหภูมิ
$ลส
ตัวดำเนินการตรรกะ OR (||)
ตัวดำเนินการตรรกะ OR (||) อยู่ตรงข้ามกับตัวดำเนินการตรรกะ AND (&&) คำสั่งถัดไปจะทำงานหากคำสั่งก่อนหน้าล้มเหลวในการดำเนินการ คำสั่ง cat สามคำสั่งรวมกับตัวดำเนินการ OR (||) ในตัวอย่างต่อไปนี้ เมื่อคุณจะรันคำสั่ง อย่างแรกเลย มันจะพยายามแสดงเนื้อหาของไฟล์ cat.txt หากไม่มีไฟล์ดังกล่าวอยู่ในตำแหน่งปัจจุบัน ไฟล์นั้นจะพยายามรันคำสั่งถัดไป ตามผลลัพธ์ ไฟล์ bird.txt อยู่ในตำแหน่งปัจจุบันและเนื้อหาของไฟล์นี้จะปรากฏขึ้น
$ cat cat.txt || cat dog.txt || cat bird.txt
คำสั่งหลายคำสั่งพร้อมตัวดำเนินการหลายตัว
คุณสามารถใช้ตัวดำเนินการหลายตัวเพื่อเรียกใช้คำสั่งหลายคำสั่งพร้อมกัน ในตัวอย่างต่อไปนี้ สามคำสั่งจะถูกรวมเข้ากับตัวดำเนินการ OR (||) และ AND (&&) หลังจากรันคำสั่ง อันดับแรก จะเปลี่ยนไดเร็กทอรีปัจจุบันเป็น newdir ถ้ามีไดเร็กทอรีอยู่ หากคำสั่งนี้ล้มเหลว มันจะสร้างไดเร็กทอรีโดยรันคำสั่งที่สองและพิมพ์ข้อความ ไดเร็กทอรีจะถูกสร้างขึ้น ตามผลลัพธ์ ไดเร็กทอรี newdir ไม่มีอยู่ในตำแหน่งปัจจุบัน ดังนั้น ข้อความแสดงข้อผิดพลาดจะแสดงขึ้นและไดเร็กทอรีจะถูกสร้างขึ้นในภายหลัง
$ซีดีnewdir|| mkdirnewdir&& โยนออก 'ไดเร็กทอรีถูกสร้างขึ้น'
ตัวดำเนินการรวมกัน {}
สามารถรวมคำสั่งตั้งแต่สองคำสั่งขึ้นไปโดยใช้โอเปอเรเตอร์นี้ และหากการดำเนินการของคำสั่งแรกล้มเหลว คำสั่งที่สองจะไม่ดำเนินการ ในตัวอย่างต่อไปนี้ ตัวดำเนินการ OR, AND และชุดค่าผสมถูกใช้ร่วมกัน คำสั่งแรกจะตรวจสอบว่าไดเร็กทอรี temp อยู่ในตำแหน่งปัจจุบันหรือไม่ หากคำสั่งแรกล้มเหลว มันจะสร้างไดเร็กทอรี temp และพิมพ์ข้อความ คำสั่งสุดท้ายจะแสดงรายชื่อไดเร็กทอรีปัจจุบัน
$[ -NSอุณหภูมิ] || { mkdirอุณหภูมิ;โยนออกสร้างไดเร็กทอรี temp แล้ว;} && ลส
ตัวดำเนินการลำดับความสำคัญ ()
คุณสามารถใช้โอเปอเรเตอร์นี้เพื่อจัดกลุ่มคำสั่งในขณะที่ดำเนินการ ที่นี่แต่ละกลุ่มจะทำงานเป็นงานเดียว ในตัวอย่างต่อไปนี้ มีการกำหนดกลุ่มคำสั่งสองกลุ่ม และหากกลุ่มแรกล้มเหลวในการดำเนินการ กลุ่มที่สองจะดำเนินการ
$(ซีดีอุณหภูมิ&& ลส-ถึง) || (mkdirอุณหภูมิ&& ลส)
บทสรุป
บทช่วยสอนนี้อธิบายโอเปอเรเตอร์ที่ใช้เป็นส่วนใหญ่สำหรับการรันหลายคำสั่งใน Linux แต่มีโอเปอเรเตอร์อื่นอีกมากมายใน bash ซึ่งใช้ในการรันคำสั่งตั้งแต่สองคำสั่งขึ้นไปพร้อมกัน สิ่งเหล่านี้คือเครื่องหมายและ (&) การเปลี่ยนเส้นทาง (,>>) ไม่ใช่ตรรกะ (!) ชุดค่าผสม ({}) เป็นต้น