Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม Bash

เชี่ยวชาญคำสั่ง which ใน Linux: คู่มือทีละขั้นตอนพร้อมตัวอย่างปฏิบัติ

บทช่วยสอนนี้จะสอนคุณวิธีใช้คำสั่ง which ใน Linux พร้อมตัวอย่างง่ายๆ

คำสั่ง which จะบอกเส้นทางไปยังไฟล์ executable ที่ถูกใช้โดยคำสั่งบนระบบ หากมีอยู่

ทำไมจึงมีประโยชน์? สมมติว่าคุณมีสองสำเนาของ executable MySQL ติดตั้งบนระบบ (ติดตั้งผ่านวิธีต่างกัน) และคุณต้องการรู้ว่าตัวไหนกำลังถูกใช้งานจริง เพื่อให้อีกตัวสามารถลบได้ – คำสั่ง which จะบอกว่าตัวไหนในสองตัวถูกเรียกเมื่อคุณรัน MySQL บนบรรทัดคำสั่ง

ไวยากรณ์คำสั่ง which ใน Linux

คำสั่งสำหรับคำสั่ง which มีดังนี้:

which OPTIONS COMMAND

โปรดทราบว่า:

  • OPTIONS เป็นรายการตัวเลือกจากตารางด้านล่าง ซึ่งสามารถใช้เปลี่ยนพฤติกรรมเริ่มต้นของคำสั่ง which
  • COMMAND คือชื่อคำสั่งที่คุณต้องการทราบเส้นทางไปยัง executable
    • COMMAND ต้องระบุ มิฉะนั้น which จะไม่มีอะไรให้ค้นหา!

ตัวเลือกคำสั่ง

นี่คือตัวเลือกที่ใช้บ่อยที่สุดซึ่งสามารถส่งให้คำสั่ง which:

ตัวเลือก คำอธิบาย
--all, -a พิมพ์ executable ที่ตรงกันทั้งหมดใน PATH ไม่ใช่แค่ตัวแรก
--read-alias, -i อ่านอีลิอาสจาก stdin รายงานตัวที่ตรงกันบน stdout มีประโยชน์เมื่อร่วมกับการใช้ alias สำหรับ which เอง
--skip-alias ละเลยตัวเลือก --read-alias หากมี มีประโยชน์สำหรับค้นหา binary ปกติอย่างชัดเจน ขณะใช้ --read-alias ใน alias หรือ function สำหรับ which
--read-functions อ่านการกำหนด shell function จาก stdin รายงานตัวที่ตรงกันบน stdout มีประโยชน์เมื่อร่วมกับการใช้ shell function สำหรับ which เอง
--skip-functions ละเลยตัวเลือก --read-functions หากมี มีประโยชน์สำหรับค้นหา binary ปกติอย่างชัดเจน ขณะใช้ --read-functions ใน alias หรือ function สำหรับ which

เช่นเดิม คุณสามารถดูคู่มือผู้ใช้เต็มรูปแบบสำหรับคำสั่ง which โดยรัน:

man which

ตัวอย่างคำสั่ง which

ด้านล่าง เราค้นหาเส้นทางสำหรับ executable ที่ถูกเรียกเมื่อ nano รันจากเทอร์มินัล:

which nano

จะได้ผลลัพธ์ในลักษณะนี้ หากติดตั้ง text editor nano บนระบบของคุณ:

/usr/bin/nano

ถ้า nano ไม่ได้ ติดตั้ง คุณจะเห็น:

nano not found

สิ่งนี้ทำให้คำสั่ง which มีประโยชน์ทั้งสำหรับตรวจสอบตำแหน่ง executable และตรวจสอบว่าแพ็กเกจติดตั้ง/พร้อมใช้งานหรือไม่

สามารถระบุชื่อ executable หลายตัวได้ หากต้องการค้นหาหลายคำสั่งพร้อมกัน:

which cat less

จะได้ผลลัพธ์:

/bin/cat /usr/bin/less

รหัสส่งคืน (Return Codes)

หากคุณใช้ which ใน Shell Script คุณสามารถใช้รหัสสถานะที่คำสั่งส่งคืน เพื่อตัดสินใจว่า executable path ถูกพบหรือไม่:

รหัส ความหมาย
0 คำสั่งที่ระบุทั้งหมดถูกพบและ executable
1 คำสั่งที่ระบุหนึ่งขึ้นไปไม่ถูกพบ หรือไม่ executable
2 ใช้ตัวเลือกหรือไวยากรณ์ไม่ถูกต้อง

สิ่งนี้มีประโยชน์มาก หากคุณต้องการทำให้ shell scripts ของคุณพกพาได้ (portable) – คุณสามารถใช้คำสั่ง which ตรวจสอบว่าคำสั่งพร้อมใช้งานก่อนรันในสคริปต์ เพื่อให้ผู้ใช้ปลายทางไม่ได้รับข้อผิดพลาดหากพวกเขาไม่มีซอฟต์แวร์ที่จำเป็นติดตั้ง