Confusione sul cambiamento di significato di argomenti e opzioni, esiste una definizione standard ufficiale?


11

Mi sono imbattuto in una variazione confusa nella comprensione di quali opzioni e argomenti sono relativi alla sintassi dei comandi.

Ad esempio, ho incontrato definizioni come:

  • command -a -b -c d e f

    alcuni differiscono tra -a -b -c, chiamarli opzioni o switch e d e fchiamandoli argomenti.

  • command -a -b -c d e f

    alcuni, ad esempio un bashmanuale, chiamano tutti gli -a -b -c d e fargomenti e spiegano che tutti sono accessibili da uno script $1 $2 $3 $4 $5 $6rispettivamente.

  • command -a b=c

    alcuni chiamano -aun'opzione, bun argomento e cil valore, ma altri li mescolano come nei primi due punti, in una varietà chiamando tutti gli -a b cargomenti.

Queste tre versioni sono solo esempi per una moltitudine di diverse varietà di chiamata, non so nemmeno come elencarle tutte, ma ho notato che sicuramente non esiste una convenzione di denominazione fissa.

O almeno, non esiste una convenzione di denominazione standardizzata che conosco, perché mi sono imbattuto in diverse fonti casuali, ma anche tra siti o manuali ufficiali affiliati Linux e GNU ho potuto incontrare questa incoerenza.

Esiste uno schema di denominazione ufficiale indiscutibile a cui posso fare riferimento?


La seconda forma è corretta al 100% dal suo punto di vista. Il contesto è molto importante.
Oskar Skog,

Risposte:


18

Adattato dalla sezione "Sintassi dell'argomento utility" dello standard POSIX :

utility_name [-a] [-b] [-c option_argument]
             [-d|-e] [-f[option_argument]] [operand...]

L'utilità nell'esempio è denominata utility_name. È seguito da opzioni , argomenti-opzione e operandi .

Gli argomenti che consistono in -caratteri e singole lettere o cifre, come ad esempio a, sono noti come opzioni (o, storicamente, bandiere ). Alcune opzioni sono seguite da un argomento-opzione , come mostrato con [-c option_argument]. Gli argomenti che seguono le ultime opzioni e opzioni-argomenti sono chiamati operandi .

Lo standard definisce anche "argomento" come

Nel linguaggio dei comandi della shell, un parametro è passato a un'utilità come equivalente di una singola stringa argvnell'array creata da una delle execfunzioni. Un argomento è una delle opzioni, opzioni-argomenti o operandi che seguono il nome del comando.


Tutte le cose dopo la utility_nameriga di comando sono gli argomenti dell'utilità e vengono visualizzati nei parametri posizionali se si tratta di uno script di shell. I termini opzione, argomento-argomento e operando sono nomi più specifici per questi argomenti sulla riga di comando.

"Flag" e "switch" sono sinonimi comuni di "opzione".

In caso di

utility -a b=c
  • -ae b=csono argomenti,
  • -aè un'opzione se l'utilità lo riconosce come tale (l' lnutilità non ha -xopzioni, quindi -xnon è un'opzione ln, in senso stretto, e ln -xattiverà un messaggio diagnostico),
  • b=cè un argomento-opzione se l' -aopzione accetta un argomento, altrimenti è un operando,
  • be nonc sono opzioni, argomenti-opzioni e non operandi in sé.

Come noterai dal mio testo sopra, lavorare dalla sinossi di un'utilità (come indicato nel manuale dell'utilità) sarebbe stato più semplice che provare a decodificare un comando generico digitato sulla riga di comando. Il manuale indicherà chiaramente quali opzioni accettano argomenti-opzione e quali argomenti sono operandi ecc.

Chiamare cun "valore" è IMHO perfettamente ok. Non è qualcosa che è standardizzato, ma pochissimi vi fraintenderebbero se diceste " cè il valore dato ab ". Sarebbe chiaro dal contesto dell'utilità in questione.

Per esempio

$ awk -v var="d" '...' data.in

Chiunque sappia awkdirebbe che -v var="d"significa " alla awkvariabile varviene assegnato il valore dsulla riga di comando ".

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.