วิธีแตกไฟล์ Basename โดยไม่มีพาธและนามสกุลใน Bash

Withi Taek Fil Basename Doy Mimi Phath Laea Namskul Ni Bash



คำสั่งชื่อฐานมักใช้ใน Bash เพื่อดึงข้อมูลชื่อฐานของไฟล์หรือไดเร็กทอรีจากพาธที่กำหนดโดยการลบส่วนประกอบไดเร็กทอรีที่นำหน้า บทความนี้จะสำรวจวิธีแยกชื่อฐานของไฟล์โดยไม่มีเส้นทางและส่วนขยายโดยใช้ bash

แยกชื่อไฟล์โดยไม่มีเส้นทางและส่วนขยายใน Bash

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

#!bin/ทุบตี
เส้นทางไฟล์ = / บ้าน / อาลิยัน / bash3.sh
=$ ( ชื่อฐาน $filepath )
เสียงสะท้อน ' ${s%.*} '

สคริปต์ทุบตีด้านบนกำหนดตัวแปรที่เรียกว่า “ เส้นทางไฟล์ ” และกำหนดเส้นทางของไฟล์ “ /home/aaliyan/bash3.sh “. จากนั้นสคริปต์จะใช้คำสั่งชื่อฐานเพื่อแยกชื่อฐานของไฟล์ออกจากเส้นทางไฟล์ และกำหนดผลลัพธ์ให้กับตัวแปรชื่อ “s”







การขยายพารามิเตอร์ที่สองจะลบส่วนขยายออกจากชื่อไฟล์โดยลบการจับคู่ที่สั้นที่สุดเท่าที่จะเป็นไปได้ของอักขระจำนวนเท่าใดก็ได้ตามด้วยจุดโดยใช้ “%.*” สตริงผลลัพธ์ “bash3” จะถูกพิมพ์ไปยังคอนโซลโดยใช้คำสั่ง echo:





อีกวิธีในการแยกชื่อฐานของไฟล์ที่ไม่มีพาธและส่วนขยายของไฟล์คือการใช้การขยายพารามิเตอร์ที่ไม่ใช้คำสั่งชื่อฐาน ด้านล่างคือตัวอย่างโค้ดทุบตีที่ใช้วิธีการขยายพารามิเตอร์เพื่อรับชื่อฐานของไฟล์ที่ไม่มีไฟล์ เส้นทางและนามสกุลไฟล์:





#!bin/ทุบตี
เส้นทางไฟล์ = / บ้าน / อาลิยัน / bash3.sh
= ${filepath##*/}
เสียงสะท้อน ' ${s%.*} '

นี่คือสคริปต์ทุบตีที่กำหนดตัวแปรที่เรียกว่า 'filepath' และกำหนดค่าเป็น ' /home/aaliyan/bash3.sh “. จากนั้นสคริปต์จะใช้คุณสมบัติการขยายพารามิเตอร์ของ bash สองครั้งเพื่อแยกชื่อฐานของไฟล์โดยไม่มีพาธและนามสกุล โดยเฉพาะอย่างยิ่ง การขยายพารามิเตอร์แรกจะลบพาธออกจากชื่อไฟล์โดยลบการจับคู่ที่ยาวที่สุดเท่าที่จะเป็นไปได้ของอักขระจำนวนเท่าใดก็ได้ตามด้วยเครื่องหมายทับโดยใช้ “##/”

สตริงผลลัพธ์ “ bash3.sh ” ถูกกำหนดให้กับตัวแปรที่เรียกว่า “s” การขยายพารามิเตอร์ที่สองจะลบส่วนขยายออกจากชื่อไฟล์โดยลบการจับคู่ที่สั้นที่สุดเท่าที่จะเป็นไปได้ของอักขระจำนวนเท่าใดก็ได้ตามด้วยจุดโดยใช้ “%” สตริงผลลัพธ์ “bash3” จะถูกพิมพ์ไปยังคอนโซลโดยใช้คำสั่ง echo:



บทสรุป

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