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

Команда dirname в Linux для начинающих (4 примера)

Команда dirname Linux для начинающих (4 примера)

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

В этой статье мы обсудим основу dirname, а также как вы можете использовать его. Но прежде чем мы это сделаем, необходимо знать, что все примеры/инструкции, упомянутые здесь, были протестированы на Ubuntu 16,04 LTS.

Команда dirname в Linux

Ниже приводится общий синтаксис команды dirname:

dirname [OPTION] NAME ...

 

Вот как страница man описывает эту команду:

Вывод ИМЕНИ с его последним компонентом без косой черты и задними косыми чертами; если имя не содержит 
/'s, выводиться '.' (то есть текущий каталог).

Следующие примеры дадут вам лучшее представление о том, как можно использовать этот инструмент.

Q1. Сколько команда dirname работает?

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

Вот пример:

root@destroyer:~# dirname /etc/cron.d/awstats                                                                                                                  
/etc/cron.d

 

Q2. Может ли он работать с несколькими каталогами?

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

root@destroyer:~# dirname /etc/cron.d/awstats /etc/nginx/nginx.conf /etc/nginx/vhosts/andreyex/andreyex.ru.conf
/etc/cron.d
/etc/nginx
/etc/nginx/vhosts/andreyex

 

Q3. Что делать, если имя файла является абсолютным именем?

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

root@destroyer:/etc/nginx/vhosts/andreyex# dirname andreyex.ru.conf                                                                                            
.

 

Если вы посмотрите на описание страницы man для команды(упомянутого в начале), такое поведение ясно сказано там.

Q4. Как заменить символ новой строки на NUL в выводе?

По умолчанию, строки в выводе разделены новой строкой, так как ясно это из вопроса 2 выше. Тем не менее, если вы хотите, вы можете иметь вывод, разделенный символом NUL. Для этого используйте параметр командной строки -z.

На примере этой командной строки опция в действии:

root@destroyer:/etc/nginx/vhosts/andreyex# dirname -z /etc/cron.d/awstats /etc/nginx/nginx.conf /etc/nginx/vhosts/andreyex/andreyex.ru.conf                    
/etc/cron.d/etc/nginx/etc/nginx/vhosts/andreyexroot@destroyer:/etc/nginx/vhosts/andreyex#

 

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

Вывод

Команда dirname не может быть столь же навороченной, как некоторые другие команды в Linux, но и правильно было бы сказать, что это отличный инструмент, который может пригодиться при работе со сценариями оболочки. Все, что мы обсуждали здесь в значительной степени все, что предложено инструментом. В случае, если у вас есть какие – либо сомнения или запросы, оставьте комментарий ниже.

Exit mobile version