Команда dirname

Команда dirname позволяет задействовать одноименную утилиту, предназначенную для удаления имени элемента файловой системы из полного пути к нему. Другими словами, она позволяет удалить имя файла или директории, находящееся после последней косой черты в строке полного пути к нему или к ней. Если говорить еще проще, она позволяет вывести путь к родительской директории файла или директории. В том случае, если утилите передается лишь имя файла или директории, утилита выводит символ точки, соответствующий текущей директории. Данная команда полезна для использования в рамках сценариев и является крайне простой.

Базовый синтаксис команды выглядит следующим образом:

$ dirname [параметр] путь-к-элементу-фс

Единственным поддерживаемым утилитой параметром, который может понадобиться обычному пользователю, является параметр -z, позволяющий завершать вывод символом завершения строки (нулевым символом) вместо символа перехода на новую строку для последующей обработки.

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

Вывод пути к родительской директории для файла или директории

Для получения пути к родительской директории файла на основе полного пути к нему достаточно передать утилите dirname этот полный путь без каких-либо параметров:

$ dirname /home/alex/text.txt
/home/alex

Обратите внимание на то, что файл не обязан существовать — утилита лишь обрабатывает строки.

В случае директории все работает абсолютно так же:

$ dirname /home/alex/text/
/home/alex

Директория также не обязана существовать.

В случае передачи имени файла или директории, утилита выведет символ точки:

$ dirname text.txt
.

Утилита предполагает, что при отсутствии полного пути к файлу или директории, этот файл или директория располагаются в текущей директории.

Обработка нескольких путей к файлам и директориям

Если нужно обработать сразу несколько путей, вы можете передать их утилите через символ пробела:

$ dirname /home/alex/text.txt /opt/scripts/script.sh
/home/alex
/opt/scripts

Путь к каждой из директорий выводится в новой строке.