Konwencja / standard dotyczący używania nawiasów klamrowych wokół opcji

10

Strona podręcznika dla tar w sekcji Arch Linux SYNOPSIS zaczyna się od:

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

Doskonale rozumiem, że w tej sytuacji oznacza to, że należy podać dokładnie jedną z opcji w nawiasach klamrowych, ponieważ jest tak napisane w dalszej części strony podręcznika. Czy istnieje jakiś standard lub konwencja dotycząca używania {} wokół listy wzajemnie wykluczających się opcji?

Wszystko, co mogę znaleźć, to samouczek grupowy użytkownikaman z 1998 roku, w którym napisano:

Niektóre opcje będą miały ograniczoną listę opcji. Lista opcji zostanie oddzielona przecinkami i umieszczona między nawiasami klamrowymi.

{choice1, choice2} {tak, nie}

Wygląda na to, że każda konwencja (jak ta z Open Group ) lub strona podręcznika opisuje tylko nawiasy kwadratowe ([) lub pionowe linie (|).

umbasa
źródło
1
Zwykle uważam to <>za obowiązkowe, ale przypuszczam, że jest to zarezerwowane dla argumentów, a nie opcji. Licznik: Wersja strony GNU tar dla Ubuntu ( manpages.ubuntu.com/manpages/trusty/en/man1/tar.1.html ) nie używa tego formularza, podobnie jak linux.die.net/man/ 1 / tar lub Debian . Myślę, że patrzysz na stronę podręczną tar BSD, więc jeśli istnieje konwencja, może to być BSD.
muru
upstream dla arch man-pages to man7.org , strona tar to dokładnie ten sam man7.org/linux/man-pages/man1/tar.1.html .
umbasa,
2
Zawsze myślałem, że składnia wiersza poleceń pochodzi z ENBF , ale {} w ENBF oznacza dokładnie odwrotnie (powtórzenie argumentu zamiast jednego możliwego wyboru, jak w sytuacji tar). Próbowałem użyć składni Google {} w celu okien i wydaje się, że {} jest bardzo powszechny w systemie Windows, ma nawet opis w technet . Westchnienie, może zbyt mocno staram się znaleźć prawdę.
umbasa,

Odpowiedzi:

5

To świetne pytanie (i wciąż otwarte lata później). Myślę, że oficjalna odpowiedź jest teraz dostępna w tym dokumencie Google :

  • Wymagane elementy: bez nawiasów
  • Opcjonalne wzajemnie wykluczające się elementy: nawiasy kwadratowe, rozdzielane rurką
  • Wymagane wzajemnie wykluczające się elementy: nawiasy klamrowe, rozdzielone rurką
TSG
źródło
1

Czy istnieje jakiś standard lub konwencja dotycząca używania {} wokół listy wzajemnie wykluczających się opcji?

Badałem znaczenie znaczenia opcji określonych w nawiasach klamrowych ({}) w porównaniu z opcjami określonymi w nawiasach kwadratowych ([]), kiedy natknąłem się na twoje pytanie. Było to jedyne źródło informacji, które uznałem za przydatne w odniesieniu do tego, co chciałem zrozumieć, a mianowicie dlaczego opcje są podane w nawiasach klamrowych.

Jak pisałeś:

Doskonale rozumiem, że w tej sytuacji oznacza to, że dokładnie jeden z nich musi zostać podany ...

Czytając stronę podręcznika dla netstat doszedłem do wniosku, że były to opcje dostępne do użycia z poleceniem, które należy użyć / podać przed użyciem innych opcji, które mogą być wymienione z poleceniem ORAZ tylko jedną z wymienionych opcji można oddzielić pionowym paskiem.

Przykład powyższego można znaleźć na stronie man komendy netstat:

netstat {--route | -r} [adres_rodzina_opcje] [--extend | -e [- rozszerzenie | -e]] [--verbose | -v] [--numeric | -n] [--numeric-hosts ] [- porty numeryczne] [- porty numeryczne] [- ciągłe | -c] [opóźnienie]

Źródło: netstat (8) | Strona podręcznika użytkownika systemu Linux

Zasadniczo można użyć dokładnie jednego z --route lub -r (oznaczają to samo), ale opcja musi poprzedzać inne wymienione opcje.

Odpowiedziałem tylko na twoje pytanie, ponieważ wydaje się, że pytanie pozostaje otwarte, ale wydaje mi się, że odpowiedziałeś na własne pytanie :)

Konwencja jest jedynie szeroko rozpowszechnioną praktyką. Bez względu na to, czy zostało to wyraźnie stwierdzone, czy nie, fakt, że regularnie odnajdujesz dokumenty man w tym formacie, wskazuje, że konwencja (zakładając, że poprawnie to napisałem powyżej) jest mocno ustalona.

Czy istnieje „standard”? Dla mnie to zależy od tego, jaką definicję chcesz zastosować dla „standardu”. Dla mnie niewiele jest rozróżnienia między znaczeniem słów konwencja i standard, w tym sensie, że używamy tutaj tego terminu. W tym sensie uważam, że te dwa słowa oznaczają coś w stylu „czegoś, co jest wspólnie uzgodnione, użyte i zaakceptowane jako norma”.

Dziękujemy za poświęcony czas, który pomógł mi zrozumieć tę konwencję / standard.

Darren Gansberg
źródło