ターミナル出力をログに残す

概要

ターミナル出力をブログに書く場合コピペしていましたが、操作が多いと面倒なのでログ出力するようにしました。

ログ出力する方法はいくつかあるようですが、過去に使ったことがあるscreenを使うことにしました。

環境

Mac OS X yosemite(10.10.5)

設定

.screenrcにログ出力設定を追加します。

ログファイルのパスはフルパスを記述しないとログ出力されませんでした。

$ cat ~/.screenrc
logfile "/Users/unokun/logs/screen-%Y%m%d-%n.log"
deflog on

ログ表示

出力されるログには制御記号が含まれています。-rオプションを付けてlessで表示するといい感じに表示されます。

cd%                                                                               ^M ^M~/work^M[~/work]$  ls -l^M
lstotal 1088
drwxr-xr-x+  7 unokun  staff     238  9  6 17:39 elixir
drwxr-xr-x+  6 unokun  staff     204  8 29 10:58 firebase
drwxr-xr-x+  4 unokun  staff     136  7 21 05:35 gae
drwxr-xr-x+  9 unokun  staff     306  8  9 16:25 gcp
drwxr-xr-x+ 28 unokun  staff     952  7  1 21:46 gdbm-1.9.1
-rw-r--r--+  1 unokun  staff  554843  7  1 21:44 gdbm-1.9.1.tar.gz
drwxr-xr-x+  8 unokun  staff     272  8 16 11:14 react
drwxr-xr-x+  3 unokun  staff     102  8 24  2014 the_vim_way
drwxr-xr-x+  4 unokun  staff     136  9  7 06:04 ttyrec
%                                                                               ^M ^M~/work^M[~/work]$  exit^M
exit

lessで表示

「... may be a binary file. See it anyway?」と聞かれるので「y」を入力します。

$ less -r ~/logs/screen-20150909-0.log
"/Users/unokun/logs/screen-20150909-0.log" may be a binary file.  See it anyway?

制御記号がなくなって、良い感じに表示できます。

$ cd work
$ ls -l
total 1088
drwxr-xr-x+  7 unokun  staff     238  9  6 17:39 elixir
drwxr-xr-x+  6 unokun  staff     204  8 29 10:58 firebase
drwxr-xr-x+  4 unokun  staff     136  7 21 05:35 gae
drwxr-xr-x+  9 unokun  staff     306  8  9 16:25 gcp
drwxr-xr-x+ 28 unokun  staff     952  7  1 21:46 gdbm-1.9.1
-rw-r--r--+  1 unokun  staff  554843  7  1 21:44 gdbm-1.9.1.tar.gz
drwxr-xr-x+  8 unokun  staff     272  8 16 11:14 react
drwxr-xr-x+  3 unokun  staff     102  8 24  2014 the_vim_way
drwxr-xr-x+  4 unokun  staff     136  9  7 06:04 ttyrec
[~/work]$ exit

参考資料