basename та dirname: дві команди, які ви повинні знати

команди оболонки терміналу Linux

Іноді деякі підручники спрямовані на пояснення дещо більш екзотичних і дивних команд, з іншого боку, є такі, що включають послідовний розподіл і не такі популярні, як 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 (ЄС)
  6. Права: Ви можете будь-коли обмежити, відновити та видалити свою інформацію.

  1.   Григорій Рос - сказав він

    Хороший приклад тих речей, які під час навчання ви бачите марними, але коли ви переходите до теми, ви бачите, наскільки вони практичні.