ใช้คำสั่ง `basename` เพื่ออ่านชื่อไฟล์
คำสั่ง `basename` ใช้เพื่ออ่านชื่อไฟล์โดยไม่มีนามสกุลจากไดเร็กทอรีหรือพาธไฟล์
ไวยากรณ์:
ชื่อฐานชื่อ[คำต่อท้าย]
หรือ
ชื่อฐานตัวเลือก...ชื่อ...
ที่นี่ NAME สามารถมีชื่อไฟล์หรือชื่อไฟล์ที่มีเส้นทางแบบเต็ม SUFFIX เป็นทางเลือก และมีส่วนขยายไฟล์ที่ผู้ใช้ต้องการลบ คำสั่ง `basename` มีตัวเลือกบางอย่างที่อธิบายไว้ด้านล่าง
ตัวเลือก
ชื่อ | คำอธิบาย |
-ถึง | ใช้สำหรับส่งชื่อไฟล์หลายชื่อที่มีพาธหรือไม่มีพาธเป็นอาร์กิวเมนต์คำสั่ง |
-NS | ใช้สำหรับส่งนามสกุลเป็นส่วนต่อท้ายที่ต้องลบ |
-กับ | ใช้เพื่อแสดงชื่อไฟล์หลายไฟล์โดยแยกแต่ละไฟล์เป็นค่า null |
-ช่วย | ใช้เพื่อแสดงข้อมูลการใช้คำสั่ง `basename` |
–รุ่น | ใช้เพื่อแสดงข้อมูลรุ่น |
ตัวอย่างที่ 1: การใช้ NAME และ SUFFIX
คำสั่ง `basename` ต่อไปนี้จะดึงชื่อไฟล์ที่มีนามสกุล SUFFIX ถูกละเว้นจากคำสั่งนี้ ที่นี่ผลลัพธ์คือ 'product.txt' .
$ชื่อฐาน /บ้าน/ฟามิดา/รหัส/product.txt
หากคุณต้องการดึงชื่อไฟล์โดยไม่มีนามสกุล คุณต้องระบุนามสกุลไฟล์เป็น SUFFIX ด้วยคำสั่ง 'basename' ในที่นี้ นามสกุลคือ .txt เรียกใช้คำสั่งต่อไปนี้เพื่อลบส่วนขยายออกจากไฟล์
$ชื่อฐาน /บ้าน/ฟามิดา/รหัส/product.txt .txt
ตัวอย่างที่ 2: การใช้ตัวเลือก '-a' และ NAME
ตัวอย่างการใช้ตัวเลือก '-a' ของคำสั่ง 'basename' ที่นี่ สองเส้นทางของไฟล์จะถูกส่งเป็นอาร์กิวเมนต์ด้วยคำสั่ง `basename' แต่ละชื่อไฟล์ที่มีนามสกุลจะดึงมาจากเส้นทางและพิมพ์โดยขึ้นบรรทัดใหม่
$ชื่อฐาน -ถึง /บ้าน/ฟามิดา/index.html/บ้าน/ฟามิดา/รหัส/emp.txt
ตัวอย่างที่ 3: การใช้ตัวเลือก '-z' และ NAME
ตัวเลือก '-z' ใช้กับคำสั่ง 'basename' เพื่อพิมพ์ชื่อไฟล์หลายชื่อด้วยค่า null แทนการขึ้นบรรทัดใหม่ คำสั่งต่อไปนี้ใช้สองตัวเลือกร่วมกันคือ '-a' และ '-z' ที่นี่สองชื่อไฟล์ index.html และ emp.txt จะพิมพ์โดยไม่มีช่องว่างหรือขึ้นบรรทัดใหม่
$ชื่อฐาน -NS /บ้าน/ฟามิดา/index.html/บ้าน/ฟามิดา/รหัส/emp.txt
ตัวอย่างที่ 4: การใช้ตัวเลือก '-s' และ NAME
คำสั่งต่อไปนี้สามารถใช้แทน SUFFIX ด้วย `basename' นามสกุลไฟล์ต้องผ่านตัวเลือก '-sh' เพื่อลบนามสกุลไฟล์ออกจากไฟล์ ตัวอย่างต่อไปนี้จะลบนามสกุล '-sh' ออกจากไฟล์ 'addition.sh'
$ชื่อฐาน -NS.sh เพิ่ม.sh
ตัวอย่างที่-5: ลบนามสกุลไฟล์โดยไม่มี SUFFIX
หากคุณไม่ทราบนามสกุลของไฟล์ที่คุณต้องการลบออกจากชื่อไฟล์ ตัวอย่างนี้จะช่วยคุณแก้ปัญหา สร้างไฟล์ชื่อ read_file.sh ด้วยรหัสต่อไปนี้เพื่อดึงชื่อไฟล์ของนามสกุลใด ๆ คำสั่ง `sed` ถูกใช้ในตัวอย่างนี้เพื่อลบนามสกุลประเภทใดๆ ออกจากชื่อไฟล์ หากคุณเรียกใช้สคริปต์ ผลลัพธ์จะเป็น ' เฉลี่ย ' หลังจากลบนามสกุล ' พาย '.
read_file.sh
#!/bin/bash# ตั้งชื่อไฟล์ด้วย path
ชื่อไฟล์='/home/fahmida/code/average.py'
# อ่านชื่อไฟล์แบบไม่มีนามสกุลโดยใช้คำสั่ง 'basname' และ `sed'
โยนออก '$(ชื่อฐาน '$filename' | sed 's/(.*)..*/1/')'
เรียกใช้สคริปต์
$ทุบตีread_file.sh
ตัวอย่างที่ 6: แปลงนามสกุลไฟล์จาก txt เป็น docx
ชื่อไฟล์ที่ไม่มีนามสกุลจำเป็นต้องแปลงไฟล์จากนามสกุลหนึ่งเป็นอีกนามสกุลหนึ่ง ตัวอย่างนี้แสดงให้เห็นว่าคุณสามารถเปลี่ยนนามสกุลของไฟล์ข้อความทั้งหมด (.txt) เป็นไฟล์คำ (.docx) ได้อย่างไรโดยใช้คำสั่ง `basename` ในสคริปต์ทุบตี สร้างไฟล์ชื่อ convert_file.sh ด้วยรหัสต่อไปนี้ ที่นี่ใช้ for-in loop เพื่ออ่านไฟล์ข้อความทั้งหมดด้วย .txt ส่วนขยายจากไดเร็กทอรีปัจจุบัน ชื่อไฟล์ที่ไม่มีนามสกุลจะถูกอ่านโดยคำสั่ง `basename` และเปลี่ยนชื่อโดยการเพิ่มนามสกุล .docx ในการวนซ้ำแต่ละครั้งของลูป
convert_file.sh
#!/bin/bash# ลูปจะอ่านไฟล์ข้อความแต่ละไฟล์จากไดเร็กทอรีปัจจุบัน
สำหรับชื่อไฟล์ใน ``ลส *.txt``
ทำ
# พิมพ์ชื่อไฟล์ข้อความก่อนการแปลง
โยนออก 'ชื่อไฟล์ก่อนการแปลง:$ชื่อไฟล์'
# เปลี่ยนนามสกุลของไฟล์ txt เป็น docx
mv - '$ชื่อไฟล์' '$(ชื่อฐาน -- '$filename' .txt).docx '
เสร็จแล้ว
เรียกใช้สคริปต์
$ทุบตีconvert_file.shตรวจสอบว่าไฟล์ข้อความถูกแปลงหรือไม่โดยใช้คำสั่ง `ls`
$ลส
ตัวอย่างที่ 7: อ่านชื่อไฟล์โดยไม่มีนามสกุลโดยใช้การขยายพารามิเตอร์ Shell
การขยายพารามิเตอร์ของเชลล์เป็นอีกวิธีหนึ่งในการอ่านชื่อไฟล์ที่ไม่มีนามสกุลในทุบตี ตัวอย่างนี้แสดงการใช้การขยายพารามิเตอร์เชลล์ คำสั่งต่อไปนี้จะเก็บชื่อพาธของไฟล์ไว้ในตัวแปร $ ชื่อไฟล์ .
$ชื่อไฟล์='/var/usr/temp/myfile.tar.gz'คำสั่งต่อไปนี้จะลบนามสกุลทุกประเภทออกจากเส้นทางและเก็บเส้นทางของไฟล์โดยไม่มีส่วนขยายในตัวแปร $file1 .
$ไฟล์1='${ชื่อไฟล์%%.*}'คำสั่งต่อไปนี้จะพิมพ์ชื่อไฟล์จากพาธเท่านั้น ที่นี่ผลลัพธ์จะ ' myfile '.
$โยนออก '${file1##*/}'หากชื่อไฟล์มีนามสกุลสองนามสกุลที่มีจุดสองจุด (.) และคุณต้องการอ่านชื่อไฟล์โดยลบนามสกุลไฟล์สุดท้ายออก คุณต้องใช้คำสั่งต่อไปนี้ รันคำสั่งต่อไปนี้ที่เก็บพาธไฟล์ไว้ในตัวแปร $ file2 โดยการลบนามสกุลสุดท้ายของไฟล์
$file2='${ชื่อไฟล์%.*}'ตอนนี้ เรียกใช้คำสั่งต่อไปนี้เพื่อพิมพ์ชื่อไฟล์ที่มีนามสกุลจุด (.) ที่นี่ผลลัพธ์จะเป็น myfile.tar
$โยนออก '$ {ไฟล์2 ## * /}'
บทสรุป
ชื่อไฟล์ที่ไม่มีนามสกุลจำเป็นสำหรับวัตถุประสงค์ต่างๆ บทช่วยสอนนี้อธิบายการใช้ชื่อไฟล์โดยไม่มีนามสกุลบางส่วนโดยใช้ตัวอย่าง เช่น การแปลงไฟล์ บทแนะนำนี้จะช่วยให้ผู้ใช้ที่สนใจเรียนรู้วิธีแยกชื่อไฟล์และนามสกุลออกจากเส้นทางของไฟล์ มีการอธิบายสองวิธีที่นี่ ผู้ใช้สามารถทำตามวิธีใดวิธีหนึ่งเหล่านี้เพื่อแยกชื่อไฟล์จากพาธไฟล์เท่านั้น