コマンドの実行結果を保存

実行したコマンドとその実行結果をログとして吐き出して後で参照可能にするのにscriptというコマンドがある。
利用方法は以下のような感じ

$ script <logfile名>
## .. 
## .. 何かコマンドを実行
$ exit # ここでログが出力される

scriptを実行して立ち上がった対話環境の中で、通常どおり操作を行い、その後対話環境を抜けると、それまで実行していたコマンドの内容がログに出力される。

ログはtypescriptという形式で保存されている。

問題

ただ出力されたファイルをそのまま使うには問題がある。エスケープシークエンスやカラーコードがログにそのまま残ってしまう。
これを取り除きたいので少し調べた。

とりあえず、以下のようにすれば良さそう。

  • エスケープシークエンスの除去: col
  • カラーコード(ascii color)の除去: sed
cat <logfile> | col | sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g"

コマンドの内容の記録/再生

ttyrecというコマンドもあるらしい。こちらは動画のような感覚で再生される。