имя_директории

имя_директории
Разработчик(и)Различные разработчики открытого и коммерческого ПО
Операционная системаUnix , Unix-подобный , IBM i
ПлатформаКроссплатформенный
ТипКоманда
Лицензияcoreutils : GPLv3+

dirname— стандартная компьютерная программа в Unix и Unix-подобных операционных системах . Если dirnameзадано имя пути , она удалит любой суффикс, начинающийся с последнего '/'символа косой черты ( ), и вернет результат. dirnameописана в Single UNIX Specification и в основном используется в скриптах оболочки .

История

Версия, dirnameвходящая в состав GNU coreutils , была написана Дэвидом Маккензи и Джимом Мейерингом. [1] Команда доступна в виде отдельного пакета для Microsoft Windows как часть коллекции UnxUtils собственных портов Win32 распространенных утилит GNU Unix-like. [2] Команда dirname также была перенесена в операционную систему IBM i . [3]

Использование

Единая спецификация UNIXdirname :

строка имени каталога
string
Имя пути

$ имя_каталога /home/martin/docs/base.wiki /home/martin/docs

$ dirname /home/martin/docs/. /home/martin/docs $ dirname /home/martin/docs/ /home/martin $ dirname base.wiki . $ dirname / /

Производительность

Поскольку dirnameпринимает только один операнд, его использование во внутреннем цикле сценариев оболочки может отрицательно сказаться на производительности. Рассмотрите

 while read file ; do dirname " $file " done < some-input        

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

 echo " ${ file %/* } " ; 

или если необходимо также обрабатывать относительные пути

 если [ -n " ​​${ file ##*/* } " ] ; тогда echo "." иначе echo " ${ file %/* } " ; fi           

Обратите внимание, что они обрабатывают завершающие слеши иначе, чем dirname.

Заблуждения

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

/home/martin/docs/.

Правильный способ представления пути в виде каталога — с завершающим слешем и точкой. [ по мнению кого? ] [ необходима цитата ]

Смотрите также

Ссылки

  1. ^ "Dirname(1) - Страница руководства Linux".
  2. ^ "Нативные порты Win32 некоторых утилит GNU". unxutils.sourceforge.net .
  3. ^ IBM . "IBM System i Version 7.2 Programming Qshell" (PDF) . IBM . Архивировано (PDF) из оригинала 2020-09-18 . Получено 2020-09-05 .
Получено с "https://en.wikipedia.org/w/index.php?title=Dirname&oldid=1199938803"