Ich liebe es less
, mit dem ich Protokolle mit der +F
Flagge (oder dem ShiftFHotkey) verfolgen , vorwärts und rückwärts suchen und mich im Allgemeinen frei im Dokument bewegen kann.
Aber eines fehlt less
: Normalerweise bin ich am Ende der Datei und möchte, dass neue Dinge passieren. In tail -f
würde ich nur entermehrmals treffen , und neue Protokollzeilen würden nur deutlich von alten Zeilen getrennt erscheinen.
Ist es möglich, dies hinzuzufügen less
? Wie?
Antworten:
Dies ist nicht wirklich
tail
das Verhalten - es ist das Terminal. Tail sendet lediglich einen Ausgabestream an stdout, der an Ihr Terminal gesendet wird, und Sie fügen leere Zeilen in die Mitte dieser Ausgabe ein, indem Sie die Eingabetaste drücken. Tail selbst akzeptiert überhaupt keine Eingaben von Ihnen. Sie können eingeben, was Sie möchten, und das wird auch angezeigt.less
Es handelt sich jedoch um eine Konsolen-App, die Eingaben entgegennimmt und verarbeitet. Die Konsole wird mithilfe von Terminalsteuerungssequenzen verwaltet. So können Sie einen Bildlauf durchführen. Wenn Sie beliebige Zeichen in den Stream einfügen, wird die Anzeige durcheinander gebracht, und Ihre Eingabe wird ohnehin weniger zur Steuerung des Programms verwendet.Leider scheint es keine Möglichkeit zu geben, die aktuelle Position visuell zu markieren. Das ist nicht ein schrecklicher Feature - Request, aber, und weniger ist immer noch neue Features von Zeit zu Zeit.
quelle
Ich habe Ihre Frage gefunden, als ich die gleiche Antwort für mich gesucht habe.
Enttäuscht von der akzeptierten Antwort fand ich eine Problemumgehung. Es ist weniger als ideal, aber es ermöglicht mir, meine Position in dem Protokoll zu markieren, mit dem ich verfolge
less
, worauf es ankommt.Ich habe ein kleines ausführbares Skript (ich habe es genannt
marklog
) mit den folgenden Inhalten erstellt und es in meinen Pfad eingefügt:Dies funktioniert natürlich nur, wenn Sie Schreibzugriff auf die Protokolldatei haben - was in vielen Situationen ein Deal-Breaker sein kann. Ich habe auch diese Version erstellt, mit der ich in Protokolldateien schreibe, die ich nicht besitze (auf die ich aber Sudo-Zugriff habe):
Diese Skripte bieten genau die Art von visueller Unterbrechung, nach der ich gesucht habe. Es gibt mindestens drei Möglichkeiten, wie Sie sie verwenden können:
An dem Punkt, an dem Sie bei der Verwendung normalerweise einige Male die Eingabetaste drücken
tail -f
, führen Sie stattdessen die Ausführungmarklog
von einem anderen Terminal aus (geben Sie den Pfad zur Protokolldatei als Argument an).Verwenden Sie diese Option, um das Skript CtrlZanzuhalten,
less
damit Sie es im selben Terminalfenster ausführen können. Wenn Sie es jedoch erneut in den Vordergrund stellenless
(fg
natürlich mit), befindet es sich nicht mehr im Verfolgungsmodus, sodass Sie erneut drücken müssen ShiftF...Schließlich - und dies ist möglicherweise der bequemste Weg, da Sie den Pfad zur Protokolldatei nicht eingeben müssen : Führen Sie ihn
marklog
direktless
durch Eingabe aus!marklog %
.Less
ersetzt den aktuellen Dateinamen%
. Reagiertless
jedoch nicht auf die! Während es sich im "Follow" -Modus befindet, müssen Sie CtrlCzuerst drücken, um den Follow-Modus zu verlassen, ausführen!marklog %
und dann ShiftFerneut.Mit Methode 3 erhalten Sie außerdem den zusätzlichen Bonus des Befehlsverlaufs von Less: Drücken Sie einfach die Taste
!
und wählen Sie mit dem Aufwärtspfeil den neuesten Befehl aus (für mich ist dies immer der Fallmarklog
).Hoffe das hilft jemandem so sehr wie mir schon geholfen hat.
quelle
Drücken Sie am Ende der Datei Shift+ Fund weniger funktioniert als
tail -f
.quelle
tail -f
. Insbesondere wird die Eingabe als Zeilenumbruch nicht akzeptiert, was der einzige Punkt meiner Frage ist. Außerdem habe ich bereitsShift+F
in der Frage erwähnt (mit einem kleinen Fehler muss ich sagen)Ich glaube nicht, dass du das kannst. Ich habe
m
und verwendet'
, um interessante Orte zu markieren und sie dann wieder aufzurufen, aber dies gibt Ihnen nicht die Trennung, nach der Sie fragen. Vielleicht macht so etwas wie Multitail, was Sie wollen.quelle
Die Antwort von Lambart bringt mich zu meiner Lieblingslösung. Danke an Lambart!
Geben Sie einfach den Folgemodus ein ctrlcund rufen Sie auf
!printf "\n\n---$(date)---\n\n" >> %
. Danach müssen Sie noch einmal drücken enterund drücken shiftf, um der Datei erneut zu folgen.quelle