Команда dirname: выделить каталог из строки пути
Получите строку родительской части пути без обращения к файлам. Разберите имя без слеша, корень и компоненты .., которые сохраняются в результате.
Назначение команды
dirname удаляет последнюю компоненту строкового имени. Результат подходит для дальнейшего анализа пути, но не доказывает наличие каталога или доступ к нему. Команда не выполняет cd и не меняет текущую рабочую точку оболочки.
Синтаксис и учебный пример
Форма dirname ИМЯ возвращает точку для обычного имени без слеша. Для /srv/reports/day.txt результатом будет /srv/reports. Компоненты .. не разрешаются по реальному дереву: a/../b даёт a/.., а не вычисленный физический каталог.
dirname /srv/reports/day.txtПроверка: Вывод /srv/reports — строковая родительская часть.
Опции и варианты записи
Таблица разделяет основные формы записи. Ниже отдельно перечислены пределы виртуальной команды.
| Запись | Смысл |
|---|---|
| NAME | Строка, из которой удаляется последняя компонента. |
| -- | Отделить опции от имени с начальным дефисом. |
| Несколько имён | GNU dirname допускает несколько аргументов; учебная версия принимает один. |
| -z | NUL-разделение результатов в GNU dirname; вне модели. |
Вывод, ошибки и статус
Результат идёт в stdout, а ошибка использования — в stderr. Успех преобразования не означает, что следующий cd получится: отсутствие каталога, search permission и символические ссылки рассматриваются уже при обращении к файловой системе.
Как избежать неверного результата
Не сокращайте a/.. вслепую, если a может быть ссылкой и требуется физическое разрешение. Отдельно определяйте, работаете ли вы со строковым адресом или существующим объектом. dirname также не создаёт отсутствующих родителей: это другая операция с самостоятельной проверкой результата.
Реальная система и учебная модель
В тренажёре принимается один путь и --; NUL и опции GNU запрещены. Корневые слеши схлопываются по выбранному правилу Linux, без отдельного значения // других платформ. Текущий каталог остаётся прежним, а VFS не читается и не изменяется.
Технические источники
Использованы для проверки поведения. Объяснения и учебные сценарии созданы для проекта.
- GNU Coreutils — dirname
Проверка текста: 2026-09-11. Нативное исполнение на всей матрице дистрибутивов ещё не подтверждено.
Основные понятия общие для Linux. Состав утилит, версии и системные настройки зависят от окружения.
От материала к практике
Выберите следующую тему в каталоге Linux или проверьте знакомые команды в учебном терминале.