Страницы

Поиск по вопросам

среда, 17 апреля 2019 г.

Каков синтаксис описаний (synopsis) команд?

Например SYNOPSIS команды apt
apt [-h] [-o=config_string] [-c=config_file] [ -t=target_release] [ - a=architecture] {list | search | show | update | install pkg [{=pkg_version_number | /target_release}]... | remove pkg... | upgrade | full-upgrade | edit-sources | {-v | --version} | {-h | --help}}
https://manpages.debian.org/stretch/apt/apt.8.en.html
Что означают все эти скобки, палки и многоточия или курсив? Есть мнение что синтаксис вообще не документирован и написан чисто от балды.


Ответ

Интересный вопрос. Что-то я ранее не задумывался, т.к. такое описание встречается повсеместно в документации как разных утилит, так и в документации к языкам программирования.
Оказывается, этот синтаксис не только документирован, но и является частью POSIX стандарта, описанного в части Utility Argument Syntax
Кратко по основным моментам:
utility_name [-a] [-b] [-c option_argument] [-d|-e] [-f[option_argument]] [operand...]
сначала пишется название утилиты, за ней параметры и аргументы в квадратных скобках указываются необязательные опции и аргументы аргументы упомянутые в одной группе через разделитель | означают, что эти аргументы взаимно-исключающие и не могут использоваться совместно троеточие означает, что допустимо несколько этот параметр несколько раз упоминаний {} в стандарте не вижу, очевидно это сделано для облегчения чтения и записи описания утилиты с множеством взаимоисключающих параметров. По стандарту синопсис должен был быть записан как-то так:
apt [-h] [-o=config_string] [-c=config_file] [-t=target_release] [-a=architecture] list apt [-h] [-o=config_string] [-c=config_file] [-t=target_release] [-a=architecture] search apt [-h] [-o=config_string] [-c=config_file] [-t=target_release] [-a=architecture] show apt [-h] [-o=config_string] [-c=config_file] [-t=target_release] [-a=architecture] update # и так далее на каждое действие

Комментариев нет:

Отправить комментарий