Конвенція / стандарт щодо використання фігурних дужок навколо варіантів


10

Сторінка чоловічої стрічки для смоли в розділі SYNOPSIS Arch Linux починається з:

tar {A|c|d|r|t|u|x}[GnSkUWOmpsMBiajJzZhPlRvwo] [ARG...]

Я прекрасно розумію, що в цій ситуації це означає, що потрібно вказати саме один із варіантів фігурних фігурних брекетів, оскільки це сказано далі на сторінці "man". Чи існує якийсь стандарт або умова щодо використання {} навколо списку взаємовиключних варіантів?

Все, що я можу знайти, - це підручник для групи користувачівman з 1998 року, де написано:

Деякі варіанти матимуть обмежений перелік варіантів. Список варіантів буде розділений комами та розміщений між дужками.

{вибір1, вибір2} {так, ні}

Схоже, що кожен конвент (як цей із Open Group ) або man page описує лише квадратні дужки ([) або вертикальні лінії (|).


1
Зазвичай я думаю <>, що це обов'язково, але я вважаю, що це зарезервовано для аргументів на відміну від варіантів. Лічильник: версія Ubuntu для сторінки GNU tar ( manpages.ubuntu.com/manpages/trusty/en/man1/tar.1.html , для одного) не використовує цю форму, а також linux.die.net/man/ 1 / tar або Debian . Я думаю, ви можете дивитись на сторінку BSD tar, тому, якщо існує умова, це може бути річ BSD.
муру

вгору для аркових man-сторінок - man7.org , сторінка з tar - точно такий же man7.org/linux/man-pages/man1/tar.1.html .
umbasa

2
Я завжди думав, що синтаксис командного рядка вийшов із ENBF , але {} в ENBF означає прямо протилежне (повторення аргументу замість одного можливого вибору, як у ситуації tar). Я спробував google {} синтаксис з метою на windows, і, схоже, {} дуже часто зустрічається у Windows, він навіть має опис у technet . Зітхніть, можливо, я надто намагаюся знайти правду.
umbasa

Відповіді:


5

Це велике запитання (і все ще відкрите через роки). Я думаю, що зараз відповідь офіційно отримано в цьому документі Google :

  • Обов’язкові елементи: відсутні дужки
  • Необов'язкові взаємовиключні елементи: квадратні кронштейни, розмежовані труби
  • Потрібні взаємовиключні елементи: фігурні дужки, розмежовані труби

1

Чи існує якийсь стандарт або умова щодо використання {} навколо списку взаємовиключних варіантів?

Я досліджував значення значення варіантів, які вказані у фігурних дужках ({}) та опціях, зазначених у квадратних дужках ([]), коли я натрапив на ваше запитання. Це було єдине джерело інформації, яке мені здалося корисним стосовно того, що я прагнув зрозуміти, а саме чому варіанти викладені фігурними дужками.

Як ви писали:

Я прекрасно розумію, що в цій ситуації це означає, що саме одному з них треба дати ...

Читаючи сторінку man для netstat, я зрозумів, що параметри - це ті параметри, доступні для використання з командою, яка повинна бути використана / заявлена ​​до використання будь-яких інших параметрів, які можуть бути перелічені командою ТА точно лише одним із перелічених параметрів відокремлений вертикальним бруском можна використовувати.

Приклад вищесказаного можна знайти на сторінці man для команди netstat:

netstat {--route | -r} [address_family_options] [--extend | -e [- розширити | -e]] [--вербоза | -v] [- числовий | -n] [- числовий-хостів ] [- числові порти] [- числові порти] [- безперервний | -с] [затримка]

Джерело: netstat (8) | Сторінка man Linux

По суті, можна використовувати саме один із --route або -r (вони означають те саме), але параметр повинен передувати іншим переліченим параметрам.

Я лише взяв час, щоб відповісти на ваше запитання, оскільки питання, як видається, залишається відкритим, але мені здається, ви відповіли на власне питання :)

Конвенція - це лише широко встановлена ​​практика. Будь явно зазначено чи ні, той факт, що ви регулярно знаходите чоловікові документи в такому форматі, свідчить про те, що конвенція (якщо я це правильно заявив вище) твердо встановлена.

Чи є "стандарт"? Для мене це залежить від того, яке визначення ви хочете прийняти для "стандарту". Для мене є мало, ні до чого, відмінності між значенням слова конвенція та стандарт, в тому сенсі, що ми тут використовуємо термін. У цьому сенсі я вважаю, що ці два слова означають щось за принципом "щось, що взаємно узгоджується і використовується і приймається як норма".

Дякую за ваш час, що допомагаєте мені зрозуміти цю конвенцію / стандарт.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.