ИТ Блог. Администрирование серверов на основе Linux (Ubuntu, Debian, CentOS, openSUSE)

Использование команды Dirname в Linux в скриптах Bash

Bash Heredoc

Команда dirname в Linux печатает путь к файлу с удаленным последним компонентом. Это в основном дает вам путь к каталогу из пути к файлу.

destroyer@andreyex: ~$ dirname /home/andreyex/upload/andreyex.jpg
/home/andreyex/upload
destroyer@andreyex: ~$

 

Это особенно полезно в скриптах bash, где вы хотите извлечь путь к каталогу из длинного пути к файлу.

Команда dirname дополняет команду basename. Команда basename извлекает имя файла из пути, в то время как dirname извлекает путь к каталогу.

 

Примеры команды Dirname

Команда dirname имеет простой синтаксис.

dirname OPTION PATH

 

Использование команды dirname с абсолютным путем к файлу даст путь к каталогу:

dirname /home/user/data/filename.txt
/home/user/data

 

Как и команда basename, команда dirname на самом деле примитивна. Она действительно не распознает путь к файлу. А просто ищет косые черты (/) и печатает все, что есть до последней косой черты. По сути, вы можете задать ему любую строку с / в ней, и она будет работать с ней.

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

destroyer@andreyex: ~$ dirname dir1/dir2/dir3/dir4
dir1/dir2/dir3
destroyer@andreyex: ~$

 

Если в пути нет косой черты (/), будет выведена точка (.), Означающая текущий каталог.

destroyer@andreyex: ~$ dirname andreyex.txt
.
destroyer@andreyex: ~$

 

Вы также можете использовать dirname с несколькими путями. Он вернет вывод для каждого пути в новой строке:

destroyer@andreyex: ~$ dirname dir1/file dir2/file
dir1
dir2
destroyer@andreyex: ~$

 

Вы можете использовать опцию -z, чтобы получить результат в одной строке с выводами, разделенными символом NULL.

 

Использование dirname в скрипте bash

Мы показали несколько примеров команды dirname. Давайте поговорим об использовании dirname в скриптах bash.

Предположим, у вас есть переменная пути к файлу, и вы хотите получить путь к каталогу, в котором находится файл. Это может быть простой скрипт:

pathname="/home/dir/data/filename"
result=$(dirname "$pathname")
echo $result

 

Как мы упоминали ранее, команда dirname дополняется командой basename. В отличие от dirname, команда basename печатает только последний компонент пути.

Мы надеемся, вам понравилась эта статья. Как всегда, не стесняйтесь задавать вопросы или давать предложения в разделе комментариев.

Exit mobile version