Linuxでのコマンドなどの操作ログと標準出力結果を記録するコマンド「script」について説明します。
【script】出力結果を含めたコマンド履歴を記録する
コマンド履歴を確認するだけであれば、historyコマンドで十分なのですが、標準出力結果も含めて保存したい場合にはscriptコマンドが便利です。
1 |
$ script [オプション] [出力ファイル] |
-a | 上書きせず、既存ファイルに追記する |
-F | コマンド実行毎にファイル書き込みを行う |
-q | メッセージなしでscriptコマンドを実行 |
-k | キーを記録する |
-t | ログにタイムスタンプを追加する |
scriptコマンドを実行すると、記録が開始されます。記録はexitコマンドまたは「Ctrl + d」で終了することができます。
また、出力ファイルを指定しない場合は、typescriptというファイルにログが保存されます。
エスケープシークエンスとカラーコードを削除する
出力されたログファイルには、エスケープシークエンスとカラーコード(ANSI)が入っています。
catコマンドなどで見る場合には問題ないのですが、lessコマンドやファイルに保存する場合はこれらが邪魔になります。
そこで、colコマンドとsedコマンドをパイプで繋いで、エスケープシークエンスとカラーコードを削除します。
サンプルコマンド
1 2 3 4 5 |
# Macの場合 cat typescript | sed -E "s/"$'\E'"\[([0-9]{1,2}(;[0-9]{1,2})*)?m//g" | col > log.txt # Linuxの場合 cat typescript | sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})*)?m//g" | col > log.txt |
主力結果
log.txtの内容は、以下のようになります。
1 2 3 4 5 6 7 8 |
スクリプトは 2016年04月15日 16時16分48秒に開始しました [user@local]$ ls sample1 sample2 [user@local]$ exit exit スクリプトは 2016年04月15日 16時16分54秒に終了しました |
コマンド履歴の確認にはhistoryコマンド、作業ログを記録するにはscriptコマンドと使い分けると良いでしょう。