Soll ich die Flags in einem Befehl als bewährte Methode alphabetisch sortieren?

14

Ich weiß, dass diese beiden Befehle dasselbe tun:

ls -la
ls -al

aber ich frage mich, ob es einen Vorzug zwischen ihnen gibt. Ist es besser, sie auf eine bestimmte Weise zu bestellen?

Tim
quelle
11
Sie benötigen auch dieses T-Shirt: redbubble.com/people/digerati/works/… :)
Sergey
@ Sergey Fantastisches Shirt!
Terrance

Antworten:

15

Es spielt keine Rolle *, es sei denn, ein Befehl erwähnt dies ausdrücklich. Ich bin auf keinen Hinweis gestoßen, der so etwas wie eine Anleitung gab, wie man die Optionen nacheinander setzt. Ich denke aus Gründen der Lesbarkeit können die Optionen alphabetisch geordnet werden.

* Es gibt einen sehr sehr wichtigen Cavaet: Wenn eine Option einen Dateinamen oder eine andere Eingabe benötigt, müssen Sie sie entsprechend einfügen.

Zum Beispiel die -fOption, grepeine Datei als Eingabe zu nehmen, um das zu suchende Muster aus der Eingabedatei zu übernehmen. Sie müssen den Befehl wie folgt eingeben:

grep -cf input.txt file.txt 

Wenn du es so verwendest:

grep -fc input.txt file.txt 

Es schlägt fehl, da es cals Dateiname verwendet wird.

heemayl
quelle
12

Die POSIX- Konventionen legen in den Richtlinien 11 und 12 der Utility-Syntax-Richtlinien fest, dass die Bestellung " keine Rolle spielen sollte ", es sei denn, sie ist nicht für das Utility selbst dokumentiert.

Das GNU C Library Reference Manual berücksichtigt auch diese POSIX-Konventionen in 25.1.1 Program Argument Syntax Conventions .

Beachten Sie jedoch, dass es mehrere Dienstprogramme gibt, die in bestimmten Situationen strikte Anweisungen zum Ausführen der Parameter geben (z. B. find). Aus der Suchmanpage :

Der -nameTest wird vor dem -typeTest durchgeführt, um nicht stat(2)jede Datei aufrufen zu müssen.

Manchmal beschwert sich das Dienstprogramm über die Bestellung.

Chaos
quelle
3
Genau genommen hat findnur ein paar Optionen, POSIX definiert nur die beiden Optionen -Hund -L. Die GNU findin Ubuntu hat ein paar weitere Optionen, aber -typeund -namewerden als Operatoren betrachtet , nicht als Optionen . Und für Bediener ist in der Regel die Reihenfolge wichtig.
Geirha
5

Mit ls kann man bei der Bestellung von Optionen kaum etwas falsch machen.

Beachten Sie jedoch, dass andere Befehle je nach Reihenfolge unterschiedlich auf Optionen reagieren können.

Ein Beispiel ist der Befehl find. Sie erhalten unterschiedliche Ergebnisse zum Beispiel zwischen:

  find . -ls -mtime -1 

Und

  find . -mtime -1 -ls
user55570
quelle
3

Wenn Sie üben möchten, alphabetisieren Sie vielleicht kurze Zeichenfolgen. Ich finde zwei Strategien nützlich: Wörter bilden (Tippfehler reduzieren) und Sätze bilden (Verständnis verbessern).

Zum Beispiel benutze ich ls normalerweise, ls -halFweil ich trotz der seltsamen Groß- und Kleinschreibung besser in der Lage bin, halF einzugeben als etwas wie Falh , das kein Wort ist.

Bei tar hingegen tar czvf filenameschreibe und sage ich (in meinem Kopf) "tar Create and Zip, Verbosely For filename", weil ich so gelernt habe, was die verschiedenen Buchstaben bedeuten.

Vynce
quelle
Ich erinnere mich an e2fsck -fvcckt, weil es die Situation buchstabiert, in der ich mich befinde, wenn es zu viele Fehler zurückgibt. ;)
Joe
2

Wie andere geantwortet haben, spielt es keine Rolle (sofern nicht anders dokumentiert oder Optionsargumente weitere Argumente annehmen).

Aber ist es besser, die Optionen alphabetisch zu ordnen, ist fraglich.

Persönlich finde ich, dass Mnemonik mehr Wert als strenge alphabetische Reihenfolge bietet. Es ist einfacher, sich eine Reihe von Optionen zu merken, wenn sie ein einprägsames Wort bilden.

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

vs:

netstat -atn
netstat -nta

Wenn Sie also eine bestimmte Kombination von Optionen für einen Befehl wiederholen, können Sie versuchen, die Buchstaben in eine Reihenfolge zu bringen, die für Sie am einfachsten zu merken ist.

Arielf
quelle