Wie öffne ich eine Textdatei in einem Terminal mit sofortiger automatischer Aktualisierung bei jeder Änderung?
Ich habe betrachtet vim
mit :set autoread
, aber es erfordert einige elementare Eingabe (wie ein Tastendruck innen vim
) die Refresh auszulösen.
Ich möchte, dass die automatische Aktualisierung freihändig ist. Gibt es einen Hack, um das zu tun?
Ich benutze Crunchbang 11, aber ich bin ziemlich zufrieden mit dem Terminal.
tail -f $file
.inotify
. Nachschlagen, es ist eine API, auf die ich mit C-Programmierung zugreifen muss, was ich nicht so schnell tun möchte. Ich suche nach einer Shell-Befehlslösung.inotify-tools
. Diese verwenden eine im Kernel integrierte Funktion namens inotify. Jedes Mal, wenn eine Datei auf ein Ereignis reagiert, wird über inotify gesendet, auf das Sie reagieren können. Viele prog. langs. B. Python, Perl usw. haben Bibliotheken, die die Inotify-API umschließen. Siehe die Wikipedia-Seite: en.wikipedia.org/wiki/InotifyAntworten:
Dies sollte Ihnen die Datei einmal pro Sekunde anzeigen:
quelle
watch -tpcn 1 pygmentize -g filename
watch -g
, es funktioniert nicht wie erwartet .-g
Schalter ist eigentlich fürpygmentize
. Trotzdem danke für die Warnung.watch -n 1 tail file
?Zeigt die Syslog-Updates an, wenn sie der Datei hinzugefügt werden.
quelle
Ich würde verwenden,
watch
wie die andere Antwort nahelegt, aber nur um Ihnen zu zeigen, wie man ein scheinbar kompliziertes Problem mit den Bausteinen einer Shell wie Unix angehen kann. Eine while-Schleife kann eine einfache Möglichkeit sein, eine Schleife durchzuführen.Beispiel
Der Bildschirm wird gelöscht und nach einer Sekunde wird Folgendes angezeigt:
quelle
Wie in den Kommentaren vorgeschlagen, können Sie es auch verwenden,
inotify
obwohl es übertrieben ist. Bei weitem am einfachsten zu bedienenwatch
. Hier ist eine Möglichkeit, dies zu tuninotify
:Installieren Sie das
inotify-tools
PaketVerwenden
inotifywatch
Sie diese Option , um Ihre Datei auf Änderungen zu überprüfen. Führen Sie es in einer Schleife undcat
der Datei aus, wenn eine Änderung festgestellt wird (deshalb habe ichgrep
für die Zeichenfolgetotal
):quelle
-q
(oder--quiet
) an übergeben,grep
wird die übereinstimmende Zeile mit "total" stummgeschaltet.watch(1)
ist ein wirklich nützliches Werkzeug. [1]Ich würde es jedoch nicht empfehlen
cat
.Verwenden Sie stattdessen
head
oder,tail
ob Sie den Anfang oder das Ende der Datei sehen möchten.quelle