Der Tail-Befehl zeigt die letzte Zeile nicht an

Der Tail-Befehl zeigt die letzte Zeile nicht an

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 des dateBefehls)
  • 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 tailWarnung angezeigt. 2: tailFunktioniert 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 taildie 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 tailBefehl 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 catan 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.txtmit Ihrem Editor. Speichern Sie diese Datei und führen Sie dann Folgendes aus

cat additions.txt >>Entrie.txt

Dadurch wird der gesamte Inhalt additions.txtan das Ende der Datei angehängt Entrie.txt.

verwandte Informationen