Wenn Sie den nackten -
meinen am Ende des tar
Befehl, das ist bei vielen Befehlen üblich, die eine Datei verwenden wollen.
Es ermöglicht Ihnen, statt einer tatsächlichen eine Standardeingabe oder -ausgabe anzugeben Dateiname.
Das ist bei deinem ersten und dritten Beispiel der Fall. Beispiel:cdrecord
Der Befehl nimmt die Standardeingabe (den von mkisofs
erzeugten ISO-Image-Stream). ) und direkt nach /dev/dvdrw
schreiben .
Mit dem cd
Befehl, jedes Mal, wenn Sie das Verzeichnis wechseln, speichert es das Verzeichnis, aus dem Sie gekommen sind. Wenn Sie cd
tun mit dem speziellen -
"Verzeichnisname", es verwendet dieses gespeicherte Verzeichnis anstelle eines echten. Damit können Sie recht schnell zwischen zwei Verzeichnissen wechseln.
Andere Befehle können -
behandeln als anders Sonderwert.
Es ist keine Magie. Einige Befehle interpretieren -
als Benutzer, der von stdin lesen oder in stdout schreiben möchte; es gibt nichts Besonderes an der Shell.
-
bedeutet genau das, 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 100 % universell.
An der -
ist nichts Magisches Zeichen, soweit es die Shell betrifft (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", mit besonderen Bedeutungen, wo immer sie erscheinen. Dies sind "Shell-Metazeichen". -
ist nicht so.
Um zu sehen, wie ein bestimmter Befehl -
verwendet , lesen Sie die Dokumentation für diesen Befehl .