Raggruppamento di opzioni da riga di comando non booleane

4

Questa è solo una breve domanda sulla progettazione di analisi CLI standard.

Diciamo che abbiamo:

foo -abc 

per la maggior parte dei parser CLI, un singolo trattino - (a differenza di un doppio trattino -- ) significa che puoi raggruppare le singole lettere insieme. Tale che sopra è sinonimo di:

foo -a -b -c

la mia domanda è - per il raggruppamento, è possibile o consigliabile raggruppare opzioni non booleane? A me sembra che le opzioni / opzioni booleane siano l'unico tipo di opzioni che possono essere raggruppate senza un comportamento confuso / imprevedibile.

    
posta MrCholo 05.09.2018 - 03:38
fonte

2 risposte

5

È abbastanza comune aggiungere un'opzione non booleana alla fine di un gruppo di opzioni booleane, come:

git commit -am "My commit message"

Altrimenti, la tua valutazione è azzeccata.

    
risposta data 05.09.2018 - 06:44
fonte
1

Dipende dal programma. In realtà non esiste una risposta universale alla tua domanda.

L'analisi della CLI viene interamente eseguita dal programma, spesso utilizzando getopt o getopts , ma non sempre. Ad esempio, gli argomenti del comando find utilizzano tutti il prefisso del trattino singolo, ma nessuno è raggruppabile. (Questa convenzione è stata scoraggiata per parecchio tempo.)

Programmazione
Molti programmi moderni hanno eliminato completamente il prefisso dell'opzione single-dash. Alla fine richiede molto codice (come incapsulato in getopt / getopts) per gestire tutte le permutazioni ed è l'antitesi del "codice di auto-documentazione".

Il prefisso double-dash, che non consente mai il raggruppamento, è molto più semplice da analizzare ed è molto più autodocumentante poiché promuove l'ortografia dell'opzione, o almeno un'abbreviazione comune per esso.

Inoltre, il numero maggiore di sequenze di tasti non è più un problema, poiché tutte le shell comuni supportano la pressione della freccia su per presentare le precedenti righe di comando e Ctrl-r per cercare quelle precedenti, che possono quindi essere modificate. Pertanto, la stringa di comando completa deve essere immessa una sola volta. Inoltre, la maggior parte del lavoro da riga di comando viene eseguito attraverso i programmi terminali in questi giorni, quindi è disponibile anche il copia-n-incolla del mouse dell'output del comando history .

    
risposta data 07.09.2018 - 07:11
fonte

Leggi altre domande sui tag