Konvention / Standard zur Verwendung von geschweiften Klammern um Optionen


9

Die Manpage für tar im Abschnitt Arch Linux SYNOPSIS beginnt mit:

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

Ich verstehe vollkommen, dass es in dieser Situation bedeutet, dass genau eine der Optionen in den geschweiften Klammern angegeben werden muss, weil dies weiter unten in der Manpage steht. Gibt es eine Art Standard oder Konvention zur Verwendung von {} für eine Liste sich gegenseitig ausschließender Optionen?

Alles, was ich finden kann, ist ein Tutorial für Benutzergruppenman aus dem Jahr 1998, in dem es heißt:

Einige Optionen haben eine begrenzte Auswahl. Eine Liste mit Auswahlmöglichkeiten wird durch Kommas getrennt und in geschweifte Klammern gesetzt.

{choice1, choice2} {yes, no}

Wie es scheint, beschreibt jede Konvention (wie diese aus der offenen Gruppe ) oder Manpage nur eckige Klammern ([) oder vertikale Linien (|).


1
Normalerweise würde ich denken <>, dass dies obligatorisch ist, aber ich nehme an, dass dies eher Argumenten als Optionen vorbehalten ist. Counter: Ubuntu Version des GNU tar manpage ( manpages.ubuntu.com/manpages/trusty/en/man1/tar.1.html , für eine Person ) nicht verwenden Sie dieses Formular, ebenso wenig wie linux.die.net/man/ 1 / Teer oder Debian . Ich denke, Sie sehen sich vielleicht die Manpage von BSD tar an. Wenn also eine Konvention existiert, könnte es sich um eine BSD-Sache handeln.
Muru

Upstream für Arch-Manpages ist man7.org , Tar-Seite ist genau die gleiche man7.org/linux/man-pages/man1/tar.1.html .
Umbasa

2
Ich habe immer gedacht, dass die Befehlszeilensyntax aus ENBF stammt , aber {} in ENBF bedeutet genau das Gegenteil (Wiederholung des Arguments anstelle einer möglichen Auswahl wie in der Teersituation ). Ich habe versucht, die {} -Syntax mit dem Ziel auf Windows zu googeln, und es scheint, dass {} unter Windows sehr verbreitet ist und sogar eine Beschreibung auf Technet enthält . Seufz, vielleicht versuche ich zu sehr, die Wahrheit zu finden.
Umbasa

Antworten:


4

Dies ist eine großartige Frage (und 3 Jahre später noch offen). Ich denke, die Antwort wird jetzt offiziell in diesem Google-Dokument beantwortet :

  • Erforderliche Artikel: keine Backets
  • Optionale sich gegenseitig ausschließende Elemente: eckige Klammern, durch Rohre getrennt
  • Erforderliche sich gegenseitig ausschließende Elemente: Geschweifte Klammern, Rohr abgegrenzt

1

Gibt es eine Art Standard oder Konvention zur Verwendung von {} in der Liste der sich gegenseitig ausschließenden Optionen?

Ich habe die Bedeutung der Bedeutung von Optionen untersucht, die in geschweiften Klammern ({}) angegeben sind, im Vergleich zu Optionen, die in eckigen Klammern ([]) angegeben sind, als ich auf Ihre Frage gestoßen bin. Es war die einzige Informationsquelle, die ich in Bezug auf das, was ich verstehen wollte, nützlich fand, nämlich warum die Optionen in geschweiften Klammern angegeben sind.

Wie Sie geschrieben haben:

Ich verstehe vollkommen, dass es in dieser Situation bedeutet, dass genau einer von ihnen gegeben werden muss ...

Beim Lesen der Manpage für netstat wurde mir klar, dass die Optionen die Optionen sind, die zur Verwendung mit einem Befehl verfügbar sind, der verwendet / angegeben werden muss, bevor andere Optionen verwendet werden, die mit dem Befehl aufgelistet werden können, UND genau nur eine der aufgelisteten Optionen durch die vertikale Leiste getrennt kann verwendet werden.

Ein Beispiel für das oben Genannte finden Sie in der Manpage für den Befehl netstat:

netstat {--route | -r} [address_family_options] [--extend | -e [- verlängern | -e]] [--verbose | -v] [--numeric | -n] [--numeric-hosts ] [- numerische Ports] [- numerische Ports] [- kontinuierlich | -c] [Verzögerung]

Quelle: netstat (8) | Linux-Manpage

Im Wesentlichen kann man genau eines von --route oder -r verwenden (sie bedeuten dasselbe), aber die Option muss vor den anderen aufgelisteten Optionen stehen.

Ich habe mir nur die Zeit genommen, um auf Ihre Frage zu antworten, da die Frage offen zu bleiben scheint, aber mir scheint, dass Sie Ihre eigene Frage beantwortet haben :)

Eine Konvention ist lediglich eine weit verbreitete Praxis. Ob explizit angegeben oder nicht, die Tatsache, dass Sie die Man-Dokumente regelmäßig in diesem Format finden, zeigt an, dass die Konvention (vorausgesetzt, ich habe sie oben richtig angegeben) fest etabliert ist.

Gibt es einen "Standard"? Für mich hängt das davon ab, welche Definition Sie für "Standard" übernehmen möchten. Für mich gibt es kaum einen Unterschied zwischen der Bedeutung der Wörter Konvention und Standard in dem Sinne, dass wir den Begriff hier verwenden. In diesem Sinne betrachte ich die beiden Wörter als etwas im Sinne von "etwas, das einvernehmlich vereinbart und als Norm verwendet und akzeptiert wird".

Vielen Dank für Ihre Zeit, um mir zu helfen, diese Konvention / diesen Standard zu verstehen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.