basename и dirname: две команды, которые вы должны знать

команды оболочки терминала Linux

Иногда некоторые учебники нацелены на объяснение несколько более экзотических и странных команд, с другой стороны, есть некоторые, которые включают последовательные дистрибутивы и не так популярны, как cd, ls, cat и т. Д., Но они столь же практичны. В этом уроке я покажу вам, что можно сделать с помощью двух из этих команд: basename и скажи мне.

Возможно, априори они кажутся вам абсурдными и бесполезными, но они имеют довольно практические приложения в некоторых случаях, например, в сценариях, где вам нужно извлечь некоторую часть пути, такую ​​как имя файла или каталога, чтобы другая команда работала с этим ...

Для чего они

Эти команды очень простые, и его функции являются:

  • базовое имя: используется для извлечения имени файла из пути.
  • имя_директории: используется для извлечения имени каталога из пути.

Примеры использования

Здесь вы можете увидеть Ejemplos как их использовать:

  • Например, чтобы использовать базовое имя с / 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.   Грегори Рос сказал

    Хороший пример тех вещей, которые, когда вы изучаете, видите бесполезность, но когда вы подойдете к предмету, вы увидите, насколько они практичны.