Der Bindestrich an sich ist ein einfaches Befehlsargument. Seine Bedeutung ist vom Befehl abhängig. Seine beiden häufigsten Bedeutungen sind "Standardeingabe" oder (seltener) "Standardausgabe". Die Bedeutung von "vorheriges Verzeichnis" ist nur für den Befehl cd
Shell eingebaut (und das gilt nur für einige Shells, nicht für alle Shells).
cat file1 - file2 | troff ...
Das heißt, lesen file1
, Standardeingabe und file2
in dieser Reihenfolge und senden die Ausgabe an troff
.
Ein Extremfall der Verwendung von -
für "Standardeingabe" oder "Standardausgabe" stammt von (GNU) tar
:
generate_file_list ... |
tar -cf - -T - |
( cd /some/where/else; tar -xf - )
Les -cf -
Optionen in der ersten tar
bedeuten "ein Archiv erstellen" und "die Ausgabedatei ist die Standardausgabe"; die -T -
bedeutet 'die Liste der Dateien und/oder Verzeichnisse von der Standardeingabe lesen'.
Les -xf -
Optionen in der zweiten tar
bedeutet "ein Archiv extrahieren" und "die Eingabedatei ist die Standardeingabe". In der Tat, GNU tar
hat eine Option -C /some/where/else
was bedeutet, dass es die cd
selbst, so dass der gesamte Befehl sein könnte:
generate_file_list ... |
tar -cf - -T - |
tar -xf - -C /some/where/else
Der Nettoeffekt ist, dass die Dateien kopiert werden, die durch die Option generate_file_list
aus dem 'aktuellen Verzeichnis' nach /some/where/else
unter Beibehaltung der Verzeichnisstruktur. (Das 'aktuelle Verzeichnis' ist mit einer kleinen Prise Salz zu nehmen; absolute Dateinamen werden von GNU tar
- wird der führende Schrägstrich entfernt - und relative Namen werden als relativ zum aktuellen Verzeichnis betrachtet).