basename และ dirname: สองคำสั่งที่คุณควรรู้

คำสั่งเทอร์มินัลเชลล์ลินุกซ์

บางครั้งแบบฝึกหัดบางบทมีจุดมุ่งหมายเพื่ออธิบายคำสั่งที่ค่อนข้างแปลกและแปลกกว่าในทางกลับกันมีบางคำสั่งที่มีการแจกแจงแบบอนุกรมและไม่เป็นที่นิยมเท่า cd, ls, cat ฯลฯ แต่ก็ใช้ได้จริง ในบทช่วยสอนนี้ฉันจะแสดงสิ่งที่สามารถทำได้ด้วยสองคำสั่งเหล่านี้: ชื่อฐานและบอกฉัน.

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

สิ่งที่พวกเขาสำหรับ

คำสั่งเหล่านี้เป็นพื้นฐานมากและ หน้าที่ของมัน เสียง:

  • ชื่อฐาน: ใช้เพื่อแยกชื่อไฟล์จากพา ธ
  • บอกฉัน: ใช้เพื่อแยกชื่อไดเร็กทอรีจากพา ธ

ตัวอย่างการใช้งาน

คุณสามารถดูบางส่วนได้ที่นี่ ตัวอย่าง วิธีใช้:

  • ตัวอย่างเช่นการใช้ ชื่อฐาน ด้วย / etc / passwd และส่งคืนชื่อของไฟล์ในเอาต์พุตในกรณีนี้ passwd:
basename /etc/passwd

  • คุณยังสามารถระบุ ส่วนขยาย เพื่อให้คุณได้ชื่อไฟล์ที่ไม่มีนามสกุล ตัวอย่างเช่นสมมติว่าคุณต้องการแยกชื่อของรูปภาพ /home/media/test.jpg โดยไม่มีนามสกุล jpg (จะส่งคืน prueba):
basename -s .jpg /home/media/prueba.jpg

  • คุณสามารถทำได้ ประมวลผลหลายเส้นทางพร้อมกัน แยกต่างหากสำหรับสิ่งนี้คุณต้องใช้ตัวเลือก -a:
basename -a /etc/passwd /var/log/boot.log

  • หากต้องการทำสิ่งที่ตรงกันข้ามและตั้งชื่อไดเร็กทอรีโดยไม่มีชื่อไฟล์คุณต้องใช้ บอกฉัน. ตัวอย่างเช่นหากคุณต้องการใช้ในพา ธ /var/spool/mail/test.txt และให้ส่งคืน / var / spool / mail ให้ใช้:
dirname /var/spool/mail/prueba.txt

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

pathname="/home/usuario/data/fichero"

result=$(dirname "$pathname")

echo $result

เห็นได้ชัดว่าในสคริปต์นี้ "ชื่อพา ธ " จะเป็นสแตติกเดียวกันที่ประกาศโดยค่าคงที่ในตอนต้น แต่อาจมีบางกรณีที่ไม่ใช่และนั่นคือที่ มันสามารถใช้ได้จริง. ตัวอย่างเช่น

/*script para convertir una imagen gif en png*/

#!/bin/sh
for file in *.gif;do
    #Salir si no hay ficheros
    if [! -f $file];then
        exit
    fi
    b='basename $file .gif'
    echo NOW $b.gif is $b.png
    giftopnm $b.gif | pnmtopng >$b.png
done


แสดงความคิดเห็นของคุณ

อีเมล์ของคุณจะไม่ถูกเผยแพร่ ช่องที่ต้องการถูกทำเครื่องหมายด้วย *

*

*

  1. รับผิดชอบข้อมูล: AB Internet Networks 2008 SL
  2. วัตถุประสงค์ของข้อมูล: ควบคุมสแปมการจัดการความคิดเห็น
  3. ถูกต้องตามกฎหมาย: ความยินยอมของคุณ
  4. การสื่อสารข้อมูล: ข้อมูลจะไม่ถูกสื่อสารไปยังบุคคลที่สามยกเว้นตามข้อผูกพันทางกฎหมาย
  5. การจัดเก็บข้อมูล: ฐานข้อมูลที่โฮสต์โดย Occentus Networks (EU)
  6. สิทธิ์: คุณสามารถ จำกัด กู้คืนและลบข้อมูลของคุณได้ตลอดเวลา

  1.   เกรโกริโอโรส dijo

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