(2 Antworten)
Vor 6 Jahren geschlossen.
-
Eine Umleitung ist hier nicht erlaubt. Ist
catnicht erlauben? Aber ist die
Umleitung nicht unabhängig von einem damit ausgeführten Befehl?$ cat bk > bk cat: bk: input file is output file -
Warum leert die folgende Umleitung die Datei:
$ less bk > bkawkfunktioniert auch ähnlich wielessin Bezug auf die Weiterleitung.awkist derjenige, mit dem ich das Problem tatsächlich gefunden habe, während die obigen Beispiele bedeutungslos sind
Was ist im Allgemeinen der richtige Weg, die Weiterleitung zu verwenden?
Akzeptierte Antwort:
Das Problem ist, dass die Ausgabeumleitung die Datei vor less killt wird sogar gestartet:
open("file", O_WRONLY|O_CREAT|O_TRUNC, 0666) = 3
dup2(3, 1) = 1
close(3) = 0
execve("/usr/bin/less", ["less", "-WNS", "file"], [/* 102 vars */]) = 0
Die normale Ausgabeumleitung überschreibt die Datei. Der O_TRUNC (siehe man 2 open ) löscht den Dateiinhalt.