Das ist nicht wirklich tail
's Verhalten -- es ist das Terminal. Tail sendet nur einen Ausgabestrom an stdout, der an Ihr Terminal geht, und Sie fügen Leerzeilen 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 wollen, und das wird auch angezeigt.
less
, ist jedoch eine Konsolen-App, die Eingaben entgegennimmt und verarbeitet. Es verwaltet die Konsole mithilfe von Terminal-Steuersequenzen, mit denen Sie herumscrollen können. Sie beliebige Zeichen in den Stream einfügen zu lassen, würde die Anzeige durcheinander bringen und Ihre Eingabe sowieso weniger zur Steuerung des Programms verwenden.
Leider scheint es keine Möglichkeit zu geben, die aktuelle Position visuell zu markieren. Das ist jedoch keine schreckliche Feature-Anfrage, und weniger tut es trotzdem von Zeit zu Zeit neue Funktionen erhalten.
Ich habe Ihre Frage gefunden, als ich selbst nach derselben Antwort gesucht habe.
Enttäuscht von der akzeptierten Antwort fand ich eine Problemumgehung. Es ist alles andere als ideal, aber es erlaubt mir, meine Position im Protokoll, dem ich folge, mit less
zu markieren , das ist der springende Punkt.
Ich habe ein kleines ausführbares Skript erstellt (ich nannte es marklog
) mit folgendem Inhalt und füge es in meinen Pfad ein:
#!/bin/sh
echo >> $1
echo >> $1
echo >> $1
echo `date` ---------------------------------------------------------------------- >> $1
echo >> $1
echo >> $1
Dies funktioniert natürlich nur, wenn Sie Schreibzugriff auf die Protokolldatei haben – was in vielen Situationen ein Deal-Breaker sein könnte. Ich habe auch diese Version erstellt, die ich verwende, um in Protokolldateien zu schreiben, die ich nicht besitze (auf die ich aber sudo-Zugriff habe):
#!/bin/sh
sudo sh -c "echo >> $1"
sudo sh -c "echo >> $1"
sudo sh -c "echo >> $1"
sudo sh -c "echo `date` ------------------------------------------------------------------------- >> $1"
sudo sh -c "echo >> $1"
sudo sh -c "echo >> $1"
Diese Skripte bieten genau die Art von visueller Unterbrechung, nach der ich gesucht habe. Es gibt mindestens 3 Möglichkeiten, wie Sie sie verwenden können:
-
An der Stelle, an der Sie normalerweise ein paar Mal die Eingabetaste drücken würden, wenn Sie
tail -f
verwenden , führen Sie stattdessenmarklog
aus von einem anderen Terminal (mit Angabe des Pfads zur Protokolldatei als Argument). -
Verwenden Sie Strg Z um
less
auszusetzen Sie können das Skript also im selben Terminalfenster ausführen, aber wenn Sieless
wieder in den Vordergrund stellen (mitfg
, natürlich), wird es sich nicht mehr im „Folgen“-Modus befinden, also müssen Sie Shift drücken F nochmal... -
Zu guter Letzt – und dies ist möglicherweise der bequemste Weg, da Sie den Pfad zur Protokolldatei nicht eingeben müssen:Führen Sie
marklog
aus direkt vonless
indem Sie!marklog %
eingeben .Less
ersetzt%
durch den aktuellen Dateinamen . Allerdingsless
reagiert nicht auf die ! während es sich im „Folgen“-Modus befindet, müssen Sie also Strg drücken C Führen Sie zuerst!marklog %
aus, um den Folgemodus zu verlassen , dann Shift F nochmal.
Mit Methode 3 erhalten Sie auch den zusätzlichen Bonus von Less' Befehlshistorie:Drücken Sie einfach die !
und verwenden Sie dann den Aufwärtspfeil, um den neuesten Befehl auszuwählen (bei mir ist es immer marklog
).
Hoffe, das hilft jemandem so viel wie mir bereits geholfen hat.