basename و dirname: أمرين يجب أن تعرفهما

أوامر لينكس شل المحطة الطرفية

تهدف بعض البرامج التعليمية أحيانًا إلى شرح أوامر أكثر غرابة وغرابة إلى حد ما ، من ناحية أخرى ، هناك بعض البرامج التي تتضمن توزيعات متسلسلة وليست شائعة مثل cd و ls و cat وما إلى ذلك ، ولكنها عملية بنفس القدر. سأوضح لك في هذا البرنامج التعليمي ما يمكن فعله باثنين من هذه الأوامر: basename وأخبرني.

ربما بداهة أنها تبدو سخيفة بالنسبة لك ولا فائدة لها ، لكن لها فائدة تطبيقات عملية جدا في بعض الحالات ، على سبيل المثال ، في البرامج النصية حيث تحتاج إلى استخراج جزء من المسار ، مثل اسم الملف أو الدليل بحيث يعمل أمر آخر على هذا ...

لماذا هم

هذه الأوامر أساسية للغاية ، و وظائفها هي:

  • basename: يستخدم لاستخراج اسم الملف من مسار.
  • اسم: يستخدم لاستخراج اسم الدليل من المسار.

أمثلة الاستخدام

هنا يمكنك رؤية البعض Ejemplos كيفية استخدامها:

  • على سبيل المثال ، لاستخدام basename مع / 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 (الاتحاد الأوروبي)
  6. الحقوق: يمكنك في أي وقت تقييد معلوماتك واستعادتها وحذفها.

  1.   جريجوري روس قال

    مثال جيد على تلك الأشياء التي تراها عديمة الفائدة عندما تتعلم ، ولكن عندما تصل إلى الموضوع ترى مدى كونها عملية.