Eine Bildschirmprotokolldatei inkrementell wiedergeben

Eine Bildschirmprotokolldatei inkrementell wiedergeben

Ich habe einige Befehle in GNU Screen ausgeführt und den C-a HBefehl verwendet, um die Ausgabe in einer Datei aufzuzeichnen screenlog.0. Jetzt möchte ich sie jedoch anzeigen. Es gibt jede Menge Terminal-Escape-Sequenzen, also catwird mir durch einfaches -ing alles auf einmal angezeigt.

Ich weiß, dass diese Datei keine Zeitangaben enthält, und das ist in Ordnung. Aber ist es möglich, die Datei irgendwie schrittweise zu beantworten? Ein Zeichen/eine Escape-Sequenz nach der anderen? Gibt es einen Befehl, der eine Datei wie diese nimmt und nur jedes Zeichen/jede Escape-Sequenz einzeln „druckt“, während ich Tasten drücke/es mir erlaubt, vorwärts zu gehen?

AKTUALISIEREN: Wenn ich lessoder benutze more, kann ich die Datei sehen und Dinge sehen, aber das zeigt mir den Rohinhalt, einschließlich Steuercodes. Wenn ich einen Befehl halb eingegeben und gedrückt habe tab, wird die Tabulatortaste angezeigt. Ich kann also nicht kopieren/einfügen

Antwort1

Sie könnten einen Pager wie lessoder verwenden more:

less screenlog.0

Oder

more screenlog.0

Ich bin nicht sicher, welche Terminal-Escape-Codes Sie haben, aber wenn sie nicht richtig angezeigt werden, verwenden Sie

less -R screenlog.0

Antwort2

Hier ist ein einfaches POC-Bash-Skript zum Wiedergeben. screenlog.0Die Wiedergabegeschwindigkeit kann durch Drücken von 0, 1, ... geändert werden 9, wobei 0 die volle Geschwindigkeit bedeutet. Drücken Sie spacezum Anhalten/Fortsetzen.

exec 6< screenlog.0
sleep=2 # initial speed where 2 means 0.2s pauses between "lines"
while read -r line <&6 ; do
  printf '%b\n' "$line"
  read -s -N 1 -t .$sleep
  case "$REPLY" in [0-9]) sleep="$REPLY";; " ") read -s -d " ";; esac
done

verwandte Informationen