linux unterschied einfaches doppeltes minus?
Hallo liebe Community, ich bin vor kurzem auf Linux umgestiegen und mir ist aufgefallen, dass man im Terminal bei fast allen Befehlen Parameter mit einem Minus oder auch mit zweien benutzen kann. Ich habe bisher aber noch nicht verstanden, welchen Sinn es hat bzw. worin der Unterschied zwisschen den beiden besteht. Könnt ihr mir ja vielleicht weiterhelfen? Danke schonmal
3 Antworten
das einfach Minus-Zeichen dient der Kennzeichnung von Optionen. Damit werden z.B. mehrere Befehle unter einem Namen zusammengefasst oder einfach Schalter gesetzt. Oft können mehrere solcher Schalter benutzt werden, die dann einzeln ( z.B. -h -e -l -p ... ) angegeben werden.
Die meisten Befehle würden auch -help (alle hintereinander) verstehen.
Eine Hilfe könnte man dann natürlich nicht mit -help aufrufen. Das eine Hilfe gewünscht ist würde man dann mit --help angeben. In dem Falle bedeutet das doppelte Minus, dass help ein Begriff ( nur ein Schalter ) ist und nicht in die einzelnen Buchstaben geteilt werden darf. Das ist aber nicht nur bei help so.
Suche dir Befehle heraus und rufe
man <Befehlesname>
auf. Dort findet man z.B bei cp: -r oder --recursiv
Das ist aber ein ungeschriebener Standard an den sich doch viele Programmierer halten.
Warum es zwei Optionen mit der gleichen Funktionalität gibt, wie -r und --recursive, kann ich dir sagen. -r ist für den Einsatz auf der kommandozeile und --recursive ist für den Einsatz in Skripten. Man kann das natürlich machen wie man möchte, aber mit den lange Optionen wird der Quelltext von Skripten und deren Funktion leichter ersichtlich.
Hallo
Ich habe bisher aber noch nicht verstanden, welchen Sinn es hat bzw. worin der Unterschied zwisschen den beiden besteht.
Die passende Antwort hat Dir guenterhalt bereits gegeben :-)
@guenterhalt
Das ist aber ein ungeschriebener Standard an den sich doch viele Programmierer halten.
Klasse Erklärung, aber
Leider nicht alle, so gibt es:
rfkill list
xinput list
tar -xvf dateiname.tar
unrar e dateiname.rar
und bestimmt noch mehr die ich jetzt nicht kenne.
Es ist leider nicht nur bei den Optionen und Parametern so, sondern auch der eigentlich "genormte" Aufbau der Manpages wird nicht immer eingehalten. So passt mein Script nicht auf die Manpage von dialog¹
Das ist wie mit der POSIX, die wird auch nur zum Teil eingehalten, sowohl bei Linux als auch bei Solaris und bei den BSDs.
Linuxhase
¹ Gemerkt habe ich das als ich mein Manpage-Script geschrieben habe.
Du hast "tar -xvf" statt "tar xvf" in deinem Beispiel geschrieben. Die Macht der Gewohnheit. :)
Mir fällt oft auf, dass nur der erste Parameter ohne führendes "-" akzeptiert wird, alle darauf folgenden Parameter aber ein Minus erfordern.
7z x -y -so archive.7z
(Wobei 7z ein schlechtes Beispiel ist, da es aus der Windows-Welt kommt, und die Benutzung der Kommandozeile sich teilweise stark von "richtigen" Unix-Programmen unterscheidet.)
Bei meinen eigenen Programmen habe ich meistens so etwas hier eingebaut:
while (*arg == '-') {
++arg;
}
Und bei kleinen Programmen wird sowieso nur der erste Buchstabe beachtet, nachdem er in Kleinbuchstaben umgewandelt wurde, sodass "-h", "--help", "Help" oder "------Help_me_please" alles das selbe ist. Und meiner Erfahrung nach, machen das auch einige andere Programme so. :)