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

7858
ygoe

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 zwei 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 zwei Alternativen gibt? Welches war zuerst, warum wurde das andere eingeführt. Unter DOS / Windows gibt es beispielsweise fast nur Groß- und Kleinschreibung.

21

3 Antworten auf die Frage

23
Gilles

Ursprünglich gab es nur Optionen für einzelne Zeichen. Einige Programme benötigten mehrere Zeichen, jedoch immer noch einen einzelnen Bindestrich. AFAIK-Optionen mit zwei Strichen und mehreren Zeichen stammen von GNU . Sie wurden eingeführt, weil sie besser lesbar und oft einprägsamer sind (und Sie können mehr als 52 davon haben). Viele Programme haben jetzt beides: kurze Optionen für die Eingabe in die Befehlszeile und für das Zeichen, lange Optionen für Skripts oder für die Befehlszeile, wenn Sie sich nur an den längeren Optionsnamen erinnern.

+1 für die Erwähnung, dass lange Optionen für Skripte besser sind, da sie die Dokumentation erleichtern Norman Gray vor 13 Jahren 13
"Nur 52 von ihnen": Versuchen Sie "ls -BartSimpsonIsJustCool" (oder "Großartig", wenn Sie mit Solaris arbeiten. Aaron Digulla vor 13 Jahren 5
@AaronDigulla Ist das Osterei? user712092 vor 11 Jahren 1
@ user712092 Nein, das ist ein Trick. Unter Linux ist alles nach dem "Ich" das Argument für die "-I" -Option, daher macht es nur einen Unterschied, wenn Sie im aktuellen Verzeichnis eine Datei mit dem Namen "sJustCool" haben. Der `-BartSimpson`-Teil kann neu angeordnet werden, mit der Ausnahme, dass das 'S' (nach Größe sortiert) nach dem 't' (nach Datum sortiert) bleiben muss. Auch "m" hat keine Wirkung, wenn "n" oder "o" vorhanden sind. Der Befehl ist also gleichbedeutend mit `ls -BSainopsr`, und wenn ich nichts übersehen habe, können Sie keinen anderen Buchstaben entfernen, um dieselbe Ausgabe zu erzielen, und Sie können diese Buchstaben beliebig neu anordnen. Gilles vor 11 Jahren 4
@Gilles: Um so genau wie möglich zu sein, gibt es 62 verschiedene kurze Optionen (einschließlich Ziffern), nicht 52. Betrachten Sie zum Beispiel `gzip -9 Dateiname`. Radko Dinev vor 9 Jahren 2
1
Chen Levy

Man könnte vermuten, dass es Geschmackssache ist. Bei der Eingabe in die Befehlszeile kann eine kurze Option bevorzugt werden, insbesondere bei Run-Together-Optionen (z ls -AL. B. ). Die langen Optionen sind besser in der Vermittlung von Absicht, daher müssen Sie beim Lesen nicht die Manpage aufrufen ls --almost-all --dereference.

Wenn Sie Erfahrungen sammeln, können Sie natürlich lernen, dass sowohl die -Aals auch die -Lkurzen Optionen hinreichend bekannt sind und diese zusätzliche Dokumentation nicht erfordert. Insbesondere bei einem komplexen Befehl, der möglicherweise mehrere Befehle auf interessante Weise mit Bewertung, Umleitung usw. kombiniert. In diesem Fall können Sie die Kürze der Dokumentation vorziehen.

1
jfmessier

Ein anderer Zweck, den ich bei den verschiedenen Möglichkeiten zum Festlegen von Parametern (kurz und lang) sehen kann, besteht darin, dass Unix / Linux-Befehlszeilen-Folks beim Tippen möglichst kurze Befehle haben. Diese können jedoch kryptisch werden, und wenn ein Skript mit diesen kurzen Versionen geschrieben wird, werden sie auf der Straße möglicherweise schwer verständlich. Die Verwendung der langen Version kann den SAME-Befehl für jemanden, der nicht der Guru dieses Befehls ist, lesbarer und verständlicher machen, insbesondere wenn dieser Befehl tatsächlich ein lokal geschriebenes Skript ist, im Gegensatz zu einem bekannten Befehl.