GNU/Linux >> LINUX-Kenntnisse >  >> Linux

In dieselbe Datei wie die vom Befehl verarbeitete Quelldatei umleiten?

Für diese Frage gibt es hier bereits Antworten :Öffnen Umleitungsoperatoren Dateideskriptoren immer parallel?

(2 Antworten)
Vor 6 Jahren geschlossen.
  1. Eine Umleitung ist hier nicht erlaubt. Ist cat nicht erlauben? Aber ist die
    Umleitung nicht unabhängig von einem damit ausgeführten Befehl?

    $ cat bk > bk
    cat: bk: input file is output file
    
  2. Warum leert die folgende Umleitung die Datei:

    $ less  bk > bk
    

    awk funktioniert auch ähnlich wie less in Bezug auf die Weiterleitung. awk ist 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.


Linux
  1. So verwenden Sie den Tar-Befehl unter Linux

  2. Die Ausgabe eines Befehls in `time Command` umleiten?

  3. Pipes und Redirection in Linux - erklärt!

  4. Wie leitet man die Ausgabe von system() in eine Datei um?

  5. Wie kann die Ausgabe des Zeitbefehls in eine Datei unter Linux umgeleitet werden?

So verwenden Sie den Linux-diff-Befehl

Bash-Quellbefehl

So leiten Sie die Shell-Befehlsausgabe um

Zeigen Sie den Inhalt einer Datei in der Linux-Befehlszeile an

Wie verwende ich den Gzip-Befehl unter Linux?

Der Linux Move File Befehl - leicht gemacht!