Da die Datei vor dem Lesen der Datei geöffnet und abgeschnitten wird (Shell), werden die Umleitungen bereits vor dem Start von der Shell verarbeitet cat
.
Linux cat Beispiel
1432
studiohack
Können Sie mir bitte erklären, warum: 'cat <file.txt> file.txt' file.txt leer macht?
Zum Schluss noch zwei Antworten hinzufügen: Wenn Sie eine Schleife machen möchten (endlos füllende Datei), könnten Sie `cat eingeben > file.txt` als zwei >> bedeutet das Anhängen an, anstatt die Datei zu löschen.
GregC vor 14 Jahren
0
Yikes Das ist nur gruselig. Ich habe nie daran gedacht, (missbrauchen?) Katzen und Pfeifen wie diese zu benutzen! Deshalb haben wir den "Touch" -Befehl. ;-) Macht aber ein cooles Beispiel.
Brian Knoblauch vor 14 Jahren
0
2 Antworten auf die Frage
16
Michael Krelin - hacker
13
Gregory Pakosz
Die >
Umleitung erfolgt zuerst und wird file.txt
zum Schreiben geöffnet, wodurch der vorhandene Inhalt gelöscht wird.
Diese Antwort ist etwas irreführend - @Hacker ist genauer. Auf meinen Systemen werden die Weiterleitungen in der Reihenfolge der Spezifikation verarbeitet. Das heißt, "<" passiert zuerst und dann ">", aber letztere öffnet sich nicht nur zum Schreiben, sondern mit * mit der Kürzung * (`O_TRUNC '), was" den vorhandenen Inhalt löscht ". @Hacker hat recht, das passiert, bevor `cat (1)` sogar ausgeführt wird.
pilcrow vor 14 Jahren
0
Verwandte Probleme
-
9
Was ist der Unterschied zwischen den Befehlen "su -s" und "sudo -s"?
-
4
Gutes freies Ubuntu Server-VMWare-Image benötigt
-
4
Was sind die Unterschiede zwischen den großen Linux-Distributionen? Werde ich es merken
-
2
Begrenzung der CPU-Auslastung für Flash in Firefox?
-
2
Wie kann ich mein Mikrofon unter Debian GNOME zum Laufen bringen?
-
2
Conky-Setups - Beispiele / Ideen?
-
3
Was sind die Unterschiede zwischen Linux Window Managern?
-
2
ThunderBird / Lichtsynchronisation mit SE k770i
-
4
Linux-Dateisystem
-
6
Vollbild-Flash langsam in KDE 4