
Ich verwende den folgenden Befehl, um bei jeder Dateiänderung die letzte Zeile zu lesen.
tail -f -n1 Entrie.txt
Es kommt vor, dass die erste geschriebene Zeile es ohne Probleme anzeigt, aber später, wenn ich die zweite schreibe, wird der folgende Fehler ausgegeben
tail: Entrie.txt: file truncated
Nach der Anzeige dieses Fehlers werden alle in die Datei geschriebenen Werte angezeigt. Aber das ist nicht alles. Nach dem Schreiben vieler Zeilen tritt der Fehler nicht mehr auf und ist behoben. Ich brauche es aber, damit es immer gut funktioniert.
Ich führe diesen Befehl unter Linux aus.
Ich füge der Datei in einem Editor Zeilen hinzu und speichere.
Antwort1
Sie können die Datei ändern, indem Sie eine neue Version schreiben oder Daten an die aktuelle anhängen.
Beispiel in der Shell:
date > sample_file.txt
- erstellt die Datei mit neuem Text neu (Ausgabe desdate
Befehls)date >> sample_file.txt
- hängt Text an die aktuelle Datei an
Szenario 1: Ihre Datei wurde abgeschnitten (Inhalt gelöscht und neu erstellt, dies kann durch einfaches „Schreiben“ in einem Texteditor erfolgen) und es wird eine entsprechende tail
Warnung angezeigt. 2: tail
Funktioniert wie beabsichtigt.
Antwort2
Wenn ein Texteditor eine Datei speichert, passiert es sehr oft, dass er sie in einevorübergehendDatei, leert (kürzt) die Originaldatei und kopiert den Inhalt der temporären Datei in die Originaldatei. Dies geschieht, um die Berechtigungen, den Besitz und andere Metadaten der Originaldatei nicht zu ändern.
Das bedeutet, dass aus der Sicht von tail
die Datei gekürzt (geleert) wird, so dass die letzte Zeile der Datei angezeigt wird.während der Herausgeber es umschreibt(weshalb die gesamte Datei angezeigt wird).
Um Zeilen zur Datei so hinzuzufügen, dass Ihr tail
Befehl immer nur die letzte Zeile der Datei und sonst nichts anzeigt, müssen Sie sicherstellen, dassAnhängenZeilen in die Datei. Da Texteditoren im AllgemeinenumschreibenUm die Datei zu sichern, müssen Sie hierfür möglicherweise andere Mittel verwenden.
Eine sehr einfache Möglichkeit, Daten an eine Datei anzuhängen, ist die Verwendung von cat
:
cat >>Entrie.txt
Dadurch wird cat
an die Datei angehängt Entrie.txt
. Es wartet auf Ihre Eingabe und Sie können direkt vom Terminal aus in die Datei schreiben. Die aktuelle Zeile wird an das Ende der Datei geschrieben, sobald Sie drücken Enter. Um die Dateneingabe zu beenden, drücken Sie Ctrl+Dauf eine leere Zeile.
Wenn Sie durchklicken, haben Sie natürlich keine Möglichkeit mehr, das, was Sie in den vorherigen Zeilen geschrieben haben, zu korrigieren Enter.
Eine andere Alternative wäre, die neuen Zeilen in einer separaten Datei zu bearbeiten, beispielsweise additions.txt
mit Ihrem Editor. Speichern Sie diese Datei und führen Sie dann Folgendes aus
cat additions.txt >>Entrie.txt
Dadurch wird der gesamte Inhalt additions.txt
an das Ende der Datei angehängt Entrie.txt
.