Просто обратитесь к Perl:
abspath=$(perl -MCwd -MFile::Basename -e 'print abs_path(dirname($ARGV[0]))' $0)
Отметьте это abs_path(dirname(...))
может не совпасть с dirname(abs_path(...))
.
(Редактирование: Добавленный -MFile::Basename
)
Обычно синтаксис, где [...] используется для указания на дополнительный args и '|', используется для указания на логическое ИЛИ используется в большинстве страниц справочника. Это зависит, кто пишет страницу справочника, поскольку нет никаких полномочий, которые диктуют то, как что должна читать страница справочника. Более характерный для Вашего вопроса однако, чтения страницы справочника, верные в этом случае. Или можно указать URL через переключатель-i, или можно предоставить сам URL. Таким образом, можно думать об опциях как "условно дополнительных". Действительно это должно, вероятно, считать что-то как
([option (excluding -i)] (-i file | URL))
но Вы видите, как это быть сложным очень быстро. Таким образом, необходимо взять быстрые описания с мелкой частицей соли. По моему опыту, синтаксис команды обычно является наименьшим количеством Ваших забот.
Кроме того, я - гнида, выбирающая здесь, но что Вы видите, не regex ;)
Я не думаю, что существует формальное определение для того (я мог бы быть неправым), но кажется, что нет большой части стандарта для этой логики, судящей по случайной выборке некоторых страниц справочника.
Я ожидал бы, что это скажет
wget [options] URL...
wget [-i|--input-file] file [options] [URL...]
Единственная строка резюме несколько характерна для страниц справочника GNU, где авторитетная документация является информационной документацией, и страница справочника является очень кратким изложением, часто описывая только наиболее распространенные опции.
Сравните это с инструментами BSD, такими как tar и независимый инструмент rsync.
С другой стороны, в Конвенциях Утилиты POSIX говорится, что несколько строк резюме должны использоваться для взаимоисключающих опций, и -i
опция является на самом деле не взаимоисключающей.
man 7 man-pages
(от пакета страниц справочника Linux), объясняют некоторые конвенции, о которых необходимо знать, даже если существуют некоторые страницы справочника, которым не удается следовать конвенциям.
Это не весь определенная реализация http://en.wikipedia.org/wiki/Backus-Naur_form?
В спецификациях POSIX , если вы щелкните «Базовые определения» в верхней левой панели, а затем «Соглашения об утилитах» в нижней левой панели , вы найдете то, что Вы ищете.
Я оказался на этой странице в поисках спецификаций POSIX для синтаксиса справки по командам, поэтому решил помочь следующему человеку.