画面ログファイルを段階的に再生する

画面ログファイルを段階的に再生する

私は gnu screen でいくつかのコマンドを実行し、C-a H出力をscreenlog.0ファイルに記録するコマンドを使用しました。しかし、今はそれを表示したいのです。ターミナル エスケープ シーケンスはたくさんあるので、cat- するだけですべてを一度に表示されます。

このファイルにはタイミング情報がないことはわかっていますが、それは問題ありません。しかし、何らかの方法でファイルを段階的に返信することは可能ですか? 一度に 1 つの文字/エスケープ シーケンスですか? このようなファイルを受け取り、ボタンを押している間、または先に進むことができる間、一度に 1 つの文字/エスケープ シーケンスのみを「印刷」するコマンドはありますか?

アップデートless:または を使用するとmore、ファイルを表示して内容を確認できますが、制御コードを含む生の内容が表示されます。コマンドを半分入力して を押すとtab、タブキーが表示されます。そのため、コピー/貼り付けができません。

答え1

lessまたは次のようなページャーを使うこともできますmore:

less screenlog.0

または

more screenlog.0

端末のエスケープコードが何なのかわかりませんが、正しく表示されない場合は、

less -R screenlog.0

答え2

以下は、再生するための簡単な POC Bash スクリプトです。、、...screenlog.0を押すことで再生速度を変更できます。0 は最高速度を意味します。 を押すと一時停止/再開します。019space

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

関連情報