Warum gibt es kurze und lange Alternativen für Befehlszeilenoptionen?

23

Die meisten unixoiden Befehle bieten kurze und lange Alternativen für Befehlszeilenoptionen wie ls -aund ls --all, oder ls -Aund ls --almost-all. Warum gibt es diese beiden Möglichkeiten? Einer ist kürzer zu tippen, der andere ist leichter zu lesen und zu verstehen. Aber jedes Mal, wenn ich ein Shell-Skript schreibe, muss ich entscheiden, welches ich verwenden möchte. Ist bekannt, warum es die beiden Alternativen gibt? Welches war zuerst, warum wurde das andere eingeführt. Unter DOS / Windows gibt es zum Beispiel fast nur Ein-Buchstaben-Optionen, bei denen die Groß- und Kleinschreibung nicht berücksichtigt wird.

ygoe
quelle

Antworten:

24

Ursprünglich gab es nur Einzelzeichenoptionen. Einige Programme haben Optionen mit mehreren Zeichen, aber immer noch mit einem Strich. AFAIK Double-Dash-Optionen mit mehreren Zeichen stammen von GNU . Sie wurden eingeführt, weil sie lesbarer und oft einprägsamer sind (und Sie können mehr als 52 davon haben). Viele Programme haben jetzt beides: kurze Optionen, wenn Sie in der Befehlszeile tippen und sich das Zeichen merken, lange Optionen für Skripte oder in der Befehlszeile, wenn Sie sich nur an den längeren Optionsnamen erinnern.

Gilles 'SO - hör auf böse zu sein'
quelle
15
+1 für die Erwähnung, dass lange Optionen für Skripte besser sind, weil sie helfen, Dinge zu dokumentieren
Norman Gray
5
Was "nur 52 von ihnen" ls -BartSimpsonIsJustCoolGreat
betrifft
1
@AaronDigulla Ist das Osterei?
User712092
5
@ user712092 Nein, das ist ein Trick. Unter Linux ist alles nach dem Idas Argument für die -IOption, daher macht es nur dann einen Unterschied, wenn Sie eine Datei sJustCoolim aktuellen Verzeichnis haben. Das -BartSimpsonTeil kann neu angeordnet werden, mit der Ausnahme, dass das S(nach Größe sortieren) nach dem t(nach Datum sortieren) bleiben muss . Hat mauch keine Auswirkung wenn noder ovorhanden sind. Der Befehl ist also gleichbedeutend mit ls -BSainopsr: Wenn ich nichts übersehen habe, können Sie keinen weiteren Buchstaben entfernen, um die gleiche Ausgabe zu erzielen, und Sie können diese Buchstaben frei neu anordnen.
Gilles 'SO- hör auf böse zu sein'
2
@Gilles: Übrigens, um so genau wie möglich zu sein, kann es 62 verschiedene kurze Optionen (einschließlich Ziffern) geben, nicht 52. Betrachten Sie gzip -9 filenamezum Beispiel.
Radko Dinev
1

Sie könnten vermuten, dass es Geschmackssache ist. Bei der Eingabe über die Befehlszeile kann eine kurze Option bevorzugt werden, insbesondere bei Run-Together-Optionen (z ls -AL. B. ). Die langen Optionen vermitteln die Absicht besser, sodass Sie beim Lesen nicht die Manpage zu Rate ziehen müssen ls --almost-all --dereference.

Wenn Sie Erfahrung sammeln, werden Sie natürlich feststellen, dass sowohl die -Aals auch die -LKurzoptionen hinreichend bekannt sind und diese zusätzliche Dokumentation nicht benötigen. Insbesondere in einem komplexen Befehl, der mehrere Befehle auf interessante Weise mit Auswertung, Umleitung usw. kombiniert. In einem solchen Fall ziehen Sie möglicherweise die Kürze der Dokumentation vor.

Chen Levy
quelle
1

Ein weiterer Grund für die Angabe von Parametern (kurz und lang) ist, dass Unix / Linux-Befehlszeilen-Benutzer bei der Eingabe so kurze Befehle wie möglich bevorzugen. Diese können jedoch kryptisch werden, und wenn ein Skript mit diesen Kurzversionen geschrieben wird, können sie später schwer zu verstehen sein. Die Verwendung der langen Version kann den SAME-Befehl für Personen, die nicht der Guru dieses Befehls sind, lesbarer und verständlicher machen , insbesondere wenn dieser Befehl tatsächlich ein lokal geschriebenes Skript ist, im Gegensatz zu einem bekannten Befehl.

jfmessier
quelle