วิธีตรวจสอบว่ามีไฟล์อยู่ใน bash . หรือไม่

How Check If File Exists Bash



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

วิธีตรวจสอบการมีอยู่ของไฟล์โดยใช้สคริปต์ทุบตี:

1) โดยการป้อนชื่อไฟล์ในเทอร์มินัล:







ขั้นแรก เราต้องสร้างไฟล์สคริปต์ทุบตี ใช้คำสั่งด้านล่าง:



$สัมผัสtestfile.sh

ชื่อของไฟล์ที่ฉันสร้างคือ testfile.sh นามสกุล .sh หมายถึงไฟล์เชลล์สคริปต์:







เปิด testfile.sh ในโปรแกรมแก้ไขข้อความ จากนั้นเขียนสคริปต์บันทึกโดยกดบันทึก

วิธีหนึ่งคือค้นหาไฟล์โดยขอชื่อไฟล์จากผู้ใช้ในเทอร์มินัล



ใช้ -NS เพื่อตรวจสอบการมีอยู่ของไฟล์

เขียนสคริปต์ด้านล่าง:

#!/bin/bash
โยนออก 'ป้อนชื่อไฟล์ของคุณ'
อ่านnewfile1
ถ้า [ -NS '$newfile1' ]
แล้ว
โยนออก 'พบไฟล์'
อื่น
โยนออก 'ไม่พบไฟล์'
เป็น

กลับไปที่เทอร์มินัลแล้วเรียกใช้ไฟล์เพื่อพิมพ์เอาต์พุต:

./ชื่อไฟล์.sh

ข้อความปฏิเสธการอนุญาตจะแสดงในเทอร์มินัล

ทำให้สามารถเรียกใช้งานได้โดยดำเนินการคำสั่งด้านล่าง:

$chmod+ x testfile.sh

ป้อนชื่อไฟล์และมันจะพิมพ์ผลลัพธ์:

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

  1. ทดสอบการแสดงออก
  2. ถ้า [ การแสดงออก ]
  3. ถ้า [[ การแสดงออก ]]

มาทำความเข้าใจกับตัวอย่าง:

1) ทดสอบ [ นิพจน์ ]
คัดลอกสคริปต์ที่กำหนดและวางลงในตัวแก้ไข บันทึก:

#!/bin/bash
ชื่อไฟล์=file1
ถ้า ทดสอบ -NS '$ชื่อไฟล์';
แล้ว
โยนออก '$ไฟล์ได้พบแล้ว'
อื่น
โยนออก '$ไฟล์ไม่พบ'
เป็น

เอาท์พุท:

เนื่องจากไม่มีไฟล์ดังกล่าวในไดเร็กทอรีของฉัน ดังนั้นรหัสจึงแสดงข้อความ ไม่พบไฟล์

2) ถ้า [ นิพจน์ ]

คัดลอกสคริปต์ต่อไปนี้เพื่อตรวจสอบว่ามีไฟล์อยู่หรือไม่:

#!/bin/bash
ชื่อไฟล์=myfile.txt
ถ้า [ -NS '$ชื่อไฟล์' ];
แล้ว
โยนออก '$ชื่อไฟล์ได้พบแล้ว'
อื่น
โยนออก 'ไม่พบชื่อไฟล์'
เป็น

เอาท์พุท:

3) ถ้า [[ นิพจน์ ]]

คัดลอกสคริปต์ที่เขียนด้านล่างแล้ววางบนเทอร์มินัล:

#!/bin/bash
ชื่อไฟล์=testfile
ถ้า [[ -NS '$ชื่อไฟล์' ]];
แล้ว
โยนออก '$ชื่อไฟล์ได้พบแล้ว'
อื่น
โยนออก '$ชื่อไฟล์ไม่พบ'
เป็น

เอาท์พุท:

วิธีตรวจสอบไดเรกทอรี:

3) โดยการป้อนชื่อไดเร็กทอรีขณะเขียนสคริปต์

ใช้ -NS แฟล็กเพื่อตรวจสอบการมีอยู่ของไดเร็กทอรี

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

#!/bin/bash
dir11=testDir
ถ้า [ -NS '$dir11' ]
แล้ว
โยนออก 'พบไดเรกทอรี'
อื่น
โยนออก 'ไม่พบไดเรกทอรี'
เป็น

เอาท์พุท:

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

#!/bin/bash
โยนออก 'พิมพ์ชื่อไดเรกทอรีของคุณ'
อ่านDir1
ถ้า [ -NS 'Dir1' ]
แล้ว
โยนออก 'พบไดเรกทอรี'
อื่น
โยนออก 'ไม่พบไดเรกทอรี'
เป็น

เอาท์พุท:

ตรวจสอบไฟล์โดยไม่ใช้คำสั่ง if:

คำสั่งทดสอบสามารถดำเนินการได้โดยไม่ต้องมีคำสั่ง if มันจะแสดงผลลัพธ์ก็ต่อเมื่อมีไฟล์อยู่ มิฉะนั้นจะไม่มีผลลัพธ์:

เขียนสคริปต์:

  1. ทดสอบ -NSmyfile.txt&& โยนออก 'พบไฟล์แล้ว'

  2. [ -NSmyfile.txt] && โยนออก '$ไฟล์ถูกพบแล้ว'

  3. [[ -NSmyfile.txt]] && โยนออก '$ไฟล์ถูกพบแล้ว'

เอาท์พุท:

ตรวจสอบไดเร็กทอรีโดยไม่ใช้คำสั่ง if:

ใช้คำสั่งด้านล่างเพื่อตรวจสอบว่ามีไดเร็กทอรีหรือไม่:

  1. [[ -NSทดสอบDir]] && โยนออก 'ไดเรกทอรีที่มีอยู่'

  2. 2) [ -NSทดสอบDir] && โยนออก 'ไดเรกทอรีที่มีอยู่'

เอาท์พุท:

การตรวจสอบหลายไฟล์/ไดเรกทอรี:

1) ตรวจสอบหลายไฟล์ด้วยคำสั่ง if:
ใช้แฟล็ก -a เพื่อตรวจสอบการมีอยู่ของไฟล์ต่างๆ แทนที่จะใช้คำสั่ง if/else ที่ซ้อนกัน:

#!/bin/bash
ถ้า [ -NSnew_file.txt-ถึง -NSnewfile.txt];แล้ว
โยนออก 'มีทั้งสองไฟล์'
เป็น

อีกวิธีหนึ่งคือ:

#!/bin/bash
ถ้า [[ -NSnew_file.txt&& -NSnewfile.txt]];แล้ว
โยนออก 'มีทั้งสองไฟล์'
เป็น

เอาท์พุท:

2) ตรวจสอบไฟล์หลายไฟล์โดยไม่ใช้คำสั่ง if:
ใช้คำสั่งต่อไปนี้เพื่อตรวจสอบหลายไฟล์พร้อมกัน 1 โดยไม่ต้องใช้ if:

  1. [[ -NSnew_file.txt&& -NSnewfile.txt]] && โยนออกทั้งสองไฟล์ออก

  2. [[ -NSnew_file.txt&& -NSnewfile.txt]] && โยนออกทั้งสองไฟล์ออก

เอาท์พุท:

บทสรุป:

บทความนี้แสดงวิธีใช้สคริปต์ทุบตีเพื่อตรวจสอบไฟล์หรือไดเรกทอรี เราใช้ตัวเลือกต่างๆ เพื่อตรวจสอบความพร้อมใช้งานของไฟล์ ประการแรก เราใช้คำสั่งทดสอบกับแฟล็กต่างๆ จากนั้นเราได้เรียนรู้การใช้ if, if-else ที่ซ้อนกัน และไม่มีคำสั่ง if เพื่อตรวจสอบไฟล์หรือไดเร็กทอรี เรายังดูวิธีตรวจสอบหลายไฟล์หรือไดเรกทอรีอีกด้วย