Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม BASH

วิธีตรวจสอบว่ามีไฟล์หรือไดเรกทอรีอยู่ใน Bash [+ ตัวอย่าง]

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

การทดสอบ ไวยากรณ์คำสั่ง

test EXPRESSION

คำสั่งทดสอบจะประเมิน EXPRESSION . นิพจน์สามารถสร้างได้โดยใช้ตัวดำเนินการต่อไปนี้ และสร้างได้โดยใช้ตัวดำเนินการร่วมกัน

-d file จริงถ้าไฟล์เป็นไดเร็กทอรี [[ -d demofile ]]
-e ไฟล์ จริงถ้ามีไฟล์อยู่ [[ -e demofile ]]
-f ไฟล์ จริงถ้าไฟล์เป็นไฟล์ปกติ [[ -f demofile ]]
ไฟล์ -h จริงถ้าไฟล์เป็นลิงก์สัญลักษณ์ [[ -h demofile ]]
ไฟล์ -L จริงถ้าไฟล์เป็นลิงก์สัญลักษณ์ [[ -L demofile ]]
-s ไฟล์ จริงถ้าไฟล์มีขนาดที่มากกว่าศูนย์ [[ -s demofile ]]

 การทดสอบ คำสั่งยังสามารถใช้สำหรับการเปรียบเทียบประเภทอื่นๆ เช่น การเปรียบเทียบวันที่ของไฟล์ ประเภท และการอนุญาต และการเปรียบเทียบสตริงและตัวเลข เพื่อดูคู่มือผู้ใช้สำหรับ การทดสอบ คำสั่งเรียกใช้สิ่งต่อไปนี้ในเชลล์ Linux:

man test

คุณอาจสังเกตเห็น [[]] (วงเล็บเหลี่ยม) – วงเล็บเหลี่ยมสามารถใช้แทน find คำสั่ง – แต่เราจะหลีกเลี่ยงการทำอย่างนั้นเพื่อให้เข้าใจง่าย

การทดสอบ ตัวอย่างคำสั่ง

คุณตรวจสอบได้อย่างรวดเร็วว่ามีไฟล์หรือไดเรกทอรีอยู่หรือไม่โดยใช้ปุ่ม && โอเปอเรเตอร์บนเปลือก Linux ซึ่งจะทำงานก็ต่อเมื่อ ทดสอบ คำสั่งออกโดยมีสถานะเป็น TRUE:

test -e /path/to/myfile && echo "File or directory exists."

การใช้การทดสอบ คำสั่งด้วย if คำชี้แจง

คุณสร้างสคริปต์ที่มีตรรกะตามเงื่อนไขได้โดยใช้คำสั่ง if..else และ find :

if test -f path/to/myfile; then
    echo "File exists and is a regular file."
elif test -d path/to/myfile; then
    echo "File exists and is a directory."
else 
    echo "File does not exist."
fi

บทสรุป

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

สคริปต์ที่ดีจะตรวจสอบการมีอยู่ของไฟล์ก่อน และถามผู้ใช้ว่าควรดำเนินการอย่างไร และสามารถสร้างวิธีการข้างต้นเพื่อทำสิ่งนั้นได้

สำหรับบทแนะนำเพิ่มเติมเกี่ยวกับการนำทางด้วย Linux shell คลิกที่นี่!