คุณสามารถตรวจสอบได้ว่าไฟล์หรือไดเรกทอรีมีอยู่จริงบนระบบ Linux โดยใช้คำสั่ง test ใน bash ดูตัวอย่างด้านล่างเพื่อดูวิธีการ
ไวยากรณ์คำสั่ง test
test EXPRESSION
คำสั่ง test จะประเมิน EXPRESSION นิพจน์สามารถสร้างได้โดยใช้ตัวดำเนินการต่อไปนี้ และสามารถรวมตัวดำเนินการหลายตัวเข้าด้วยกันได้
| -d file | True หาก file เป็น Directory. [[ -d demofile ]] |
| -e file | True หาก file มีอยู่ (Exists). [[ -e demofile ]] |
| -f file | True หาก file เป็น Regular File. [[ -f demofile ]] |
| -h file | True หาก file เป็น Symbolic Link. [[ -h demofile ]] |
| -L file | True หาก file เป็น Symbolic Link. [[ -L demofile ]] |
| -s file | True หาก file มีขนาด (Size) มากกว่าศูนย์. [[ -s demofile ]] |
คำสั่ง test ยังสามารถใช้สำหรับการเปรียบเทียบประเภทอื่นๆ ได้ เช่น เปรียบเทียบวันที่ไฟล์ ประเภท และสิทธิ์ และเปรียบเทียบสตริงและตัวเลข – เพื่อดูคู่มือผู้ใช้สำหรับคำสั่ง test ให้รันคำสั่งต่อไปนี้ใน Linux shell:
man test
คุณน่าจะสังเกตเห็นวงเล็บเหลี่ยมคู่ [[]] (square brackets) – วงเล็บเหลี่ยมสามารถใช้แทนคำสั่ง find ได้ – แต่เราจะหลีกเลี่ยงการทำเช่นนั้นเพื่อให้เข้าใจง่าย
ตัวอย่างคำสั่ง test
คุณสามารถตรวจสอบได้อย่างรวดเร็วว่าไฟล์หรือไดเรกทอรีมีอยู่โดยใช้ตัวดำเนินการ && บน Linux shell ซึ่งจะรันต่อก็ต่อเมื่อคำสั่ง test ส่งคืนสถานะ TRUE:
test -e /path/to/myfile && echo "File or directory exists."
การใช้คำสั่ง test กับคำสั่ง 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 คลิกที่นี่!