Für einen Befehl, wenn - verwendet wird als Argument anstelle eines Dateinamens bedeutet STDIN oder STDOUT.
-
Aber in diesem Beispiel wird eine Datei mit dem Namen
-erstellt :echo hello > -Wie kann ich
-machen in diesem Beispiel STDOUT? -
Umgekehrt, wie kann ich
-machen bedeutet eine Datei namens-in Beispielen wie:cat -
Akzeptierte Antwort:
Mit - als Dateiname stdin/stdout zu bedeuten, ist eine Konvention, die viele Programme verwenden. Es ist keine besondere Eigenschaft des Dateinamens. Der Kernel erkennt - nicht ebenso besonders alle Systemaufrufe, die sich auf - beziehen als Dateiname wird - verwendet wörtlich als Dateiname.
Mit Bash-Umleitung - wird nicht als spezieller Dateiname erkannt, daher verwendet Bash diesen als wörtlichen Dateinamen.
Wenn cat sieht die Zeichenkette - als Dateiname wird er als Synonym für stdin behandelt. Um dies zu umgehen, müssen Sie die Zeichenfolge cat ändern sieht so, dass es immer noch auf eine Datei namens - verweist . Üblicherweise wird dem Dateinamen ein Pfad vorangestellt – ./- , oder /home/Tim/- . Diese Technik wird auch verwendet, um ähnliche Probleme zu umgehen, bei denen Befehlszeilenoptionen mit Dateinamen kollidieren, also eine Datei, die als ./-e bezeichnet wird erscheint nicht als -e Befehlszeilenoption für ein Programm, zum Beispiel.