Convenzione / standard sull'uso delle parentesi graffe attorno alle opzioni


10

La pagina man per tar nella sezione SINOSSI di Arch Linux inizia con:

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

Capisco perfettamente che in questa situazione significa che deve essere data esattamente una delle opzioni tra parentesi graffe perché lo dice più in basso nella pagina man. Esiste una sorta di standard o convenzione sull'uso di {} attorno a un elenco di opzioni reciprocamente esclusive?

Tutto quello che posso trovare è un'esercitazione di gruppo diman un utente dal 1998 in cui si dice:

Alcune opzioni avranno un elenco limitato di scelte. Un elenco di scelte sarà separato da virgole e inserito tra parentesi graffe.

{scelta1, scelta2} {sì, no}

Sembra che ogni convenzione (come questa del gruppo aperto ) o la pagina man descriva solo parentesi quadre ([) o linee verticali (|).


1
Di solito penso <>che sia obbligatorio, ma suppongo che sia riservato agli argomenti rispetto alle opzioni. Contatore: la versione di Ubuntu della manpage tar GNU ( manpages.ubuntu.com/manpages/trusty/en/man1/tar.1.html , per esempio) non usa questo modulo, né linux.die.net/man/ 1 / tar o Debian . Penso che potresti guardare la manpage di BSD tar, quindi se esiste una convenzione, potrebbe essere una cosa di BSD.
muru,

upstream per arch man-pages è man7.org , tar page è esattamente lo stesso man7.org/linux/man-pages/man1/tar.1.html .
Umbasa,

2
Ho sempre pensato che la sintassi della riga di comando provenisse da ENBF , ma {} in ENBF significa esattamente l'opposto (ripetizione dell'argomento anziché una possibile scelta come in situazione tar). Ho provato a google {} sintassi con lo scopo di windows e sembra che {} sia molto comune su Windows, ha anche una descrizione su technet . Sospiro, forse sto provando troppo a trovare la verità.
Umbasa,

Risposte:


5

Questa è una grande domanda (e ancora aperta 3 anni dopo). Penso che la risposta sia ora ufficialmente risposta in questo documento di Google :

  • Articoli richiesti: nessun supporto
  • Elementi opzionali reciprocamente esclusivi: parentesi quadre, tubo delimitato
  • Oggetti reciprocamente esclusivi richiesti: parentesi graffe, tubo delimitato

1

Esiste una sorta di standard o convenzione sull'uso di {} intorno all'elenco di opzioni reciprocamente esclusive?

Stavo ricercando il significato del significato delle opzioni specificate tra parentesi graffe ({}) rispetto alle opzioni specificate tra parentesi quadre ([]) quando ho trovato la tua domanda. È stata l'unica fonte di informazioni che ho trovato utile rispetto a ciò che stavo cercando di capire, ovvero perché le opzioni sono indicate tra parentesi graffe.

Come hai scritto:

Capisco perfettamente che in questa situazione significa che deve essere dato esattamente uno di loro ...

Leggendo la pagina man di netstat sono arrivato alla conclusione che le opzioni erano quelle disponibili per l'uso con un comando che doveva essere usato / dichiarato prima di usare qualsiasi altra opzione che potesse essere elencata con il comando E esattamente solo una delle opzioni elencate separato dalla barra verticale può essere utilizzato.

Un esempio di quanto sopra può essere trovato nella pagina man per il comando netstat:

netstat {--route | -r} [address_family_options] [--extend | -e [- extend | -e]] [--verbose | -v] [--numeric | -n] [--numeric-hosts ] [- porte-numeriche] [- porte-numeriche] [--continuous | -c] [ritardo]

Fonte: netstat (8) | Pagina man di Linux

In sostanza si può usare esattamente uno di --route o -r (significano la stessa cosa) ma l'opzione deve precedere le altre opzioni elencate.

Mi sono preso solo il tempo di rispondere alla tua domanda perché la domanda sembra rimanere aperta ma mi sembra che tu abbia risposto alla tua domanda :)

Una convenzione è semplicemente una pratica ampiamente affermata. Indipendentemente dal fatto che sia esplicitamente dichiarato o meno, il fatto che trovi regolarmente i documenti man in questo formato indica che la convenzione (supponendo che l'ho dichiarato correttamente sopra) è stabilita saldamente.

C'è uno "standard"? Per me dipende da quale definizione si desidera adottare per "standard". Per me c'è poca o nessuna distinzione tra il significato delle parole convenzione e standard, nel senso che qui stiamo usando il termine. In questo senso considero le due parole come qualcosa che significhi "qualcosa che è reciprocamente concordato, usato e accettato come norma".

Grazie per il tuo tempo nell'aiutarmi a comprendere questa convenzione / standard.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.