Wenn Sie -
am Ende des tar
Befehls " nackt" meinen , ist dies bei vielen Befehlen üblich, die eine Datei verwenden möchten.
Hier können Sie anstelle eines tatsächlichen Dateinamens eine Standardeingabe oder -ausgabe angeben .
Dies ist bei Ihrem ersten und dritten Beispiel der Fall. Der cdrecord
Befehl nimmt beispielsweise die Standardeingabe (den von erzeugten ISO-Bildstrom mkisofs
) und schreibt sie direkt in /dev/dvdrw
.
Mit dem cd
Befehl wird jedes Mal, wenn Sie das Verzeichnis wechseln, das Verzeichnis gespeichert, aus dem Sie gekommen sind. Wenn Sie cd
mit dem speziellen -
"Verzeichnisnamen" arbeiten, wird dieses gespeicherte Verzeichnis anstelle eines echten Verzeichnisses verwendet. Auf diese Weise können Sie ganz einfach schnell zwischen zwei Verzeichnissen wechseln.
Andere Befehle können -
als anderer Sonderwert behandelt werden.
-
für Git-Zweige verwenden können, dh Sie können mitgit checkout -
-
, finden Sie seine Erklärung in der Manpage.Es ist keine Magie. Einige Befehle werden so interpretiert
-
, dass der Benutzer von stdin lesen oder in stdout schreiben möchte. An der Schale ist nichts Besonderes.quelle
cd -
;bash(1)
behandelt,cd -
als ob Sie geschrieben hättencd $OLDPWD
.cd
- ein in die Shell integrierter Befehl - interpretiert einen Bindestrich selbst. Keine "Magie" :-)Umleitung von oder nach
stdin
oderstdout
.Siehe: http://tldp.org/LDP/abs/html/special-chars.html#DASHREF2
quelle
<
,>
,|
, usw.).-
bedeutet genau das, was jeder Befehl bedeuten soll. Es gibt mehrere gängige Konventionen, und Sie haben Beispiele für die meisten davon in anderen Antworten gesehen, aber keine davon ist 100% universell.Es gibt nichts Magisches an dem
-
Charakter, was die Shell betrifft (außer dass die Shell selbst und einige ihrer eingebauten Befehle wiecd
undecho
auf herkömmliche Weise verwendet werden). Einige Zeichen, wie\
,'
und"
, sind "magisch" und haben überall dort, wo sie erscheinen, eine besondere Bedeutung. Dies sind "Shell-Metazeichen".-
ist nicht so.Lesen Sie die Dokumentation zu diesem Befehl
-
, um zu sehen, wie ein bestimmter Befehl verwendet wird .quelle
Die Magie liegt in der Konvention. Seit Jahrtausenden verwenden Menschen '-', um Optionen von Argumenten zu unterscheiden, und haben '-' in einem Dateinamen verwendet, um je nach Bedarf entweder stdin oder stdout zu bedeuten. Unterschätzen Sie nicht die Kraft der Konvention!
quelle
Es bedeutet, den Standardeingabestream des Programms zu verwenden.
Im Fall von
cd
bedeutet dies etwas anderes: Wechseln Sie in das vorherige Arbeitsverzeichnis.quelle