Ich verwende tail -f a.txt
, um Updates für eine Datei namens zu sehen a.txt
.
Wenn ich die Datei mithilfe ls -a >> a.txt
einer zweiten virtuellen Konsole aktualisiere , werden die Änderungen in der ersten in Echtzeit angezeigt.
Wenn ich die Datei mit Vim in einer zweiten virtuellen Konsole aktualisiere, werden die Änderungen in der ersten nicht angezeigt.
Ich erwarte nicht unbedingt, dass es ein Update in diesem Fenster auslöst - aber warum aktualisiert dieses Update nicht das Terminal, auf dem der tail -f
Befehl ausgeführt wird?
tail -f
prüft auf Anhänge.tail -F
Überprüft, ob Dateien umbenannt wurden.Antworten:
Wenn Sie eine Datei mit bearbeiten
vim
, liest sie normalerweise die Datei in den Speicher und schreibt dann eine neue Datei. Wir arbeitentail
jetzt an einer veralteten Kopie der Datei (die im Dateisystem verbleibt, bis sietail
(und jedes andere Programm) nicht mehr verwendet wird.Sie können festlegen,
tail
dass der Dateiname (anstelle der Datei) folgt, indem Sie Folgendes verwenden:Beachten Sie die Großbuchstaben
F
.quelle
tail -F
funktioniert! In der Konsole wird nun die Meldung "a.txt wurde ersetzt: Nach dem Ende der neuen Datei" angezeigt und entsprechend aktualisiert. Vielen Dank!Nach meinem Verständnis bearbeiten
vim
Sie beim Bearbeiten mit in der Regel eine Kopie der Datei, die beim Schreiben Ihrer Änderungen auf die Festplatte an ihren Platz verschoben wird. Da dies geschieht, indemunlink
das Original undmove
das Neue in Position gebracht werden, werdentail
keine neuen Änderungen an der Originaldatei angezeigt.quelle