it-swarm.com.de

Was ist die Magie von "-" (ein Bindestrich) in Befehlszeilenparametern?

Beispiele:

  • Erstellen Sie ein ISO-Image und brennen Sie es direkt auf eine CD.

    mkisofs -V Photos -r /home/vivek/photos | cdrecord -v dev=/dev/dvdrw -

  • Wechseln Sie in das vorherige Verzeichnis.

    cd -

  • Lauschen Sie auf Port 12345 und entpacken Sie die an ihn gesendeten Daten.

    nc -l -p 12345 | tar xvzf -

Was ist der Zweck des Bindestrichs und wie verwende ich ihn?

87
chemila

Wenn Sie das nackte - Am Ende des Befehls tar meinen, ist dies bei vielen Befehlen, die eine Datei verwenden möchten, üblich.

Hier können Sie anstelle eines tatsächlichen Dateinamens eine Standardeingabe oder -ausgabe angeben.

Dies gilt für Ihr erstes und drittes Beispiel. Beispielsweise nimmt der Befehl cdrecord die Standardeingabe (den von mkisofs erzeugten ISO-Image-Stream) und schreibt ihn direkt in /dev/dvdrw.

Mit dem Befehl cd wird bei jedem Verzeichniswechsel das Verzeichnis gespeichert, aus dem Sie gekommen sind. Wenn Sie cd mit dem speziellen "Verzeichnisnamen" - Ausführen, wird dieses gespeicherte Verzeichnis anstelle eines echten Verzeichnisses verwendet. Damit können Sie schnell zwischen zwei Verzeichnissen wechseln.

Andere Befehle können - Als abweichend Sonderwert behandeln.

95
paxdiablo

Es ist keine Magie. Einige Befehle interpretieren - als Benutzer, der von stdin lesen oder nach stdout schreiben möchte; Die Shell hat nichts Besonderes.

Umleitung von oder nach stdin oder stdout.

Siehe: http://tldp.org/LDP/abs/html/special-chars.html#DASHREF2

12
Ry-

Die Magie liegt in der Konvention. Seit Jahrtausenden wird "-" verwendet, um Optionen von Argumenten zu unterscheiden, und "-" in einem Dateinamen, um entweder "stdin" oder "stdout" zu bedeuten. Unterschätzen Sie nicht die Macht der Konvention!

6
William Pursell

- Bedeutet genau, was jeder Befehl bedeuten soll. Es gibt mehrere gängige Konventionen, und Sie haben Beispiele für die meisten von ihnen in anderen Antworten gesehen, aber keine davon ist zu 100% universell.

Für die Shell ist das Zeichen - Nichts Magisches (außer, dass die Shell selbst und einige ihrer eingebauten Befehle wie cd und echo, verwenden Sie es auf herkömmliche Weise). Einige Zeichen, wie \, ' Und ", sind "magisch", haben spezielle Bedeutungen, wo immer sie erscheinen. Dies sind "Shell-Metazeichen". - Ist nicht so.

Um zu sehen, wie ein bestimmter Befehl - Verwendet, lesen Sie die Dokumentation zu diesem Befehl.

6
Keith Thompson

Es bedeutet, den Standardeingabestream des Programms zu verwenden.

Im Fall von cd bedeutet dies etwas anderes: Wechseln Sie in das vorherige Arbeitsverzeichnis.

4
Brian Cain