Синтаксис команд Unix/Linux

Синтаксис команд Unix/Linux

Когда команды Linux перечисляют свое использование, они обычно делают это следующим образом (например, wget):

wget [option]... [URL]...

Насколько я понимаю этот шаблон указания использования команды, это не обычный способ регулярного выражения для указания шаблонов, и для команды wget говорится, что не обязательно указывать какие-либо параметры, и по этой логике не обязательно указывать какой-либо URL. Я имею в виду, что я могу напрямую сделать

wget www.google.com

и это сработает. Так что параметры не являются обязательными. Если параметры не являются обязательными, поскольку они заключены в квадратные скобки, то, следуя этой логике, указание URL также не должно быть обязательным и просто

wget

как команда, должно работать также. Мой вопрос - есть ли какой-то документ, где подробно описан этот шаблон указания использования команды?

решение1

Обычно в большинстве страниц руководства используется синтаксис, в котором [...] используется для указания необязательных аргументов, а '|' используется для указания логического ИЛИ. Это зависит от того, кто пишет страницу руководства, поскольку нет органа, который диктует, как должна выглядеть страница руководства. Однако, что касается вашего вопроса, в этом случае страница руководства читается как true. Вы можете либо указать URL с помощью переключателя -i, либо предоставить сам URL. Таким образом, вы можете рассматривать параметры как «условно необязательные». На самом деле это, вероятно, должно выглядеть как-то так:

      ([option (excluding -i)] (-i file | URL)) 

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

И, конечно, я придираюсь, но то, что вы видите, не является регулярным выражением ;)

решение2

Я не думаю, что для этого существует формальное определение (я могу ошибаться), но, судя по случайной выборке некоторых страниц руководства, для этой логики, похоже, не существует и какого-то особого стандарта.

решение3

Я бы ожидал, что он скажет

wget [options] URL...
wget [-i|--input-file] file [options] [URL...]

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

Сравните это с такими инструментами BSD, каксмолаи независимый инструментrsync.

С другой стороны,Соглашения об утилитах POSIXговорят, что для взаимоисключающих вариантов следует использовать несколько строк синопсиса, а -iна самом деле этот вариант не является взаимоисключающим.

решение4

man 7 man-pages(из пакета man-pages Linux) объясняет некоторые соглашения, о которых вам следует знать, даже если некоторые man-страницы не соответствуют этим соглашениям.

Связанный контент