Devo ordinare alfabeticamente le bandiere in un comando come buona pratica?


Risposte:


15

Non importa davvero * a meno che un comando non menzioni esplicitamente. Non ho trovato alcun riferimento che fornisse qualcosa come una linea guida su come mettere le opzioni una dopo l'altra. Quindi, per motivi di leggibilità, penso che le opzioni possano essere disposte in ordine alfabetico.

* C'è un cavaet molto importante che è se qualsiasi opzione ha bisogno di un nome file o di qualsiasi altro input subito dopo che è necessario inserirlo di conseguenza.

Ad esempio, l' -fopzione grepaccetta un file come input per prendere il modello da cercare nel file di input. Devi dare il comando come ad esempio:

grep -cf input.txt file.txt 

Se lo usi come:

grep -fc input.txt file.txt 

fallirà poiché userà ccome nome di file.


12

Le convenzioni POSIX definiscono nelle Linee guida 11 e 12 delle Linee guida per la sintassi dell'utilità che l'ordine " non dovrebbe importare " a meno che non sia documentato per l'utilità stessa.

Il Manuale di riferimento della libreria GNU C onora anche quelle convenzioni POSIX nelle Convenzioni sulla sintassi degli argomenti del programma 25.1.1 .

Tuttavia, ci sono diverse utility che in alcune situazioni danno ordini severi su come eseguire i parametri (ad esempio, trova). Dalla manpage di ricerca :

Il -nametest viene prima del -typetest per evitare di dover chiamare stat(2)ogni file.

A volte l'utilità si lamenta dell'ordinazione.


3
A rigor di termini, findha solo poche opzioni, POSIX definisce solo le due opzioni -He-L . La GNU findin Ubuntu ha alcune opzioni in più, ma -typeed -nameecc. Sono considerati operatori , non opzioni . E per gli operatori, l'ordine di solito conta.
geirha,

5

Con ls difficilmente puoi sbagliare con l'ordine delle opzioni.

Tuttavia, tieni presente che altri comandi possono avere risposte diverse alle opzioni a seconda dell'ordine.

Un esempio è il comando find. Otterrai risultati diversi, ad esempio tra:

  find . -ls -mtime -1 

E

  find . -mtime -1 -ls

3

Se quello che vuoi praticare è alfabetizzare stringhe brevi, forse. Trovo utili due strategie: fare parole (riduce gli errori di battitura) e fare frasi (migliora la comprensione).

Per esempio, di solito lo uso ls -halFperché, anche con la strana maiuscola, sono più bravo a scrivere halF di qualcosa come Falh che non è una parola.

Per tar, invece, tar czvf filenamescrivo e dico (nella mia testa) "tar Create and Zip, Verbosely For filename" perché è così che ho imparato cosa significano le diverse lettere.


Ricordo e2fsck -fvcckt perché scrive la situazione in cui potrei trovarmi se restituisce troppi errori. ;)
Joe,

2

Come altri hanno risposto, non importa (a meno che non sia documentato diversamente o gli argomenti di opzione prendano ulteriori argomenti).

Ma è preferibile ordinare le opzioni in ordine alfabetico è discutibile.

Personalmente, trovo che la mnemonica offra più valore del rigoroso ordine alfabetico. È più facile ricordare una serie di opzioni quando formano una parola memorabile, ad esempio, considera:

netstat -tan
# alphabetic is good (by chance) in this case
netstat -ant

vs:

netstat -atn
netstat -nta

Quindi, se ti ritrovi a ripetere una determinata combinazione di opzioni per un comando, potresti voler provare a riorganizzare le lettere in un ordine che è più facile da ricordare.

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.