Ich möchte den Inhalt einer Datei ausgeben, während sie sich ändert. Beispiel foobar
:
magic_command foobar
Das aktuelle Terminal sollte den Inhalt der Datei anzeigen und warten, bis, ich weiß nicht, ich ^ C drücke.
Wenn ich dann von einem anderen Terminal aus Folgendes tue:
echo asdf >> foobar
Das erste Terminal sollte die neu hinzugefügte Zeile zusätzlich zum ursprünglichen Dateiinhalt anzeigen (natürlich, da ich nicht ^ C gedrückt habe).
Ich werde dies als Hausaufgabe markieren, da ich Linux erforschen und lernen möchte, aber es ist keine Hausaufgabe, es ist nur eine Kuriosität von mir.
Antworten:
Sie können verwenden
tail command
mit-f
:Es ist eine gute Lösung für Echtzeitshows.
quelle
-F
(groß f) verwenden, wodurch die Datei erneut geöffnet wird, wenn sie währenddessen entfernt und neu erstellt wird.Wenn Sie eine kurze Datei anzeigen möchten, die auf einen Terminalbildschirm passt, und sich möglicherweise die gesamte Datei ändert, können Sie Folgendes verwenden
watch
:watch cat example.txt
Standardmäßig wird die gesamte Datei alle 2 Sekunden angezeigt, einschließlich eines optionalen Headers:
Mit der Option
-d
(--differences
) werden Änderungen gegenüber der vorherigen Version der Ausgabe oder gegenüber der ersten Version hervorgehoben.quelle
Wenn ich Dateiänderungen erkennen und etwas anderes als das tun
tail -f filename
muss, habe ichinotifywait
in einem Skript verwendet, um die Änderung zu erkennen und darauf zu reagieren . Ein Anwendungsbeispiel ist unten dargestellt. Sieheman inotifywait
für andere Ereignisnamen und Schalter. Möglicherweise müssen Sie dasinotify-tools
Paket beispielsweise über installierensudo apt-get install inotify-tools
.Hier ist das Beispielskript mit dem Namen
exec-on-change
:In zwei Konsolen habe ich Befehle wie folgt eingegeben (wobei A> für die Eingabe in Konsole A und B> für die Eingabe in Konsole B steht).
Die folgende Ausgabe von wurde
cat t
in Konsole A angezeigt:Die folgende Ausgabe von wurde
exec-on-change
in Konsole B angezeigt:Das
exec-on-change
Skript beendet , wenn ichrm
‚dt
.quelle
less
hat einen ähnlichen Verfolgungsmodus wietail -f
- drückenF
Sie einfach, wenn Sie ihn geöffnet haben.quelle
Ich habe drei Lösungen:
1)
tail -f
ist eine gute Idee2) Wir müssen auch
tailf
verwenden3) Das dritte ist ein Bash-Skript:
quelle