screenログをlessやemacsなどで開くとラインフィードやバックスペースなどが含まれているため、文字化けなど発生します。
colコマンドを用いることで、この文字化けの原因となるラインフィードやバックスペースを取り除くことができます。
実際にscreenのログに含まれる文字化けを取り除いてみます。 screenでログを開始した状態で以下のyumコマンドを実行してみました。
$ sudo yum -y install tcpdump
このログファイルをemacsで開くとこのようになっています。
0:user@hostname$ yum ^H^[[K^H^[[K^H^[[K^H^[[Ksudo yum install ^H^[[K^H^[[K^H^[[K^H^[[K^H^[[K^H^[[K^H^[[K^H^[[K-y install tcpdump
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: ftp.tsukuba.wide.ad.jp
* extras: ftp.tsukuba.wide.ad.jp
* updates: ftp.tsukuba.wide.ad.jp
Setting up Install Process
Resolving Dependencies
(省略)
^M Installing : 14:libpcap-1.4.0-1.20130826g [ ] 1/2^M Installing : 14:libpcap-1.4.0-1.20130826g [##### ] 1/2^M Installing : 14:libpcap-1.4.0-1.20130826g [########### ] 1/2^M Installing : 14:libpcap-1.4.0-1.20130826g [################# ] 1/2^M Installing : 14:libpcap-1.4.0-1.20130826g [####################### ] 1/2^M Installing : 14:libpcap-1.4.0-1.20130826g [########################## ] 1/2^M Installing : 14:libpcap-1.4.0-1.20130826g [########################### ] 1/2^M Installing : 14:libpcap-1.4.0-1.20130826g [############################ ] 1/2^M Installing : 14:libpcap-1.4.0-1.20130826git2dbcaa1.el6.x86_64 1/2
^M Installing : 14:tcpdump-4.0.0-3.20090921g [## ] 2/2^M Installing : 14:tcpdump-4.0.0-3.20090921g [#### ] 2/2^M Installing : 14:tcpdump-4.0.0-3.20090921g [###### ] 2/2^M Installing : 14:tcpdump-4.0.0-3.20090921g [######## ] 2/2^M Installing : 14:tcpdump-4.0.0-3.20090921g [########### ] 2/2^M Installing : 14:tcpdump-4.0.0-3.20090921g [############# ] 2/2^M Installing : 14:tcpdump-4.0.0-3.20090921g [############### ] 2/2^M Installing : 14:tcpdump-4.0.0-3.20090921g [################# ] 2/2^M Installing : 14:tcpdump-4.0.0-3.20090921g [#################### ] 2/2^M Installing : 14:tcpdump-4.0.0-3.20090921g [###################### ] 2/2^M Installing : 14:tcpdump-4.0.0-3.20090921g [######################## ] 2/2^M Installing : 14:tcpdump-4.0.0-3.20090921g [######################### ] 2/2^M Installing : 14:tcpdump-4.0.0-3.20090921g [########################## ] 2/2^M Installing : 14:tcpdump-4.0.0-3.20090921g [########################### ] 2/2^M Installing : 14:tcpdump-4.0.0-3.20090921g [############################ ] 2/2^M Installing : 14:tcpdump-4.0.0-3.20090921gitdf3cb4.2.el6.x86_64 2/2
^M Verifying : 14:libpcap-1.4.0-1.20130826git2dbcaa1.el6.x86_64 1/2
^M Verifying : 14:tcpdump-4.0.0-3.20090921gitdf3cb4.2.el6.x86_64 2/2
Installed:
tcpdump.x86_64 14:4.0.0-3.20090921gitdf3cb4.2.el6
Dependency Installed:
libpcap.x86_64 14:1.4.0-1.20130826git2dbcaa1.el6
Complete!
とても読めたものではないですね?
yumの後に^Hが入っているのはここで私がバックスペースで文字列を訂正したからです。 その他にも^Mのような記号が入っています。
screenのログはtypescriptというフォーマットで記録されています。 typescriptでは、コンソールに入力されたこのようなコントロールコードまできちんと記録されているため、 実際の操作を後から確認することができます。 その一方で、エディタなどで開く場合は非常に不便です。
一応、catで見ると普通に見れますが、通常コンソールのログは非常に長くなるので、やはりエディタで開きたくなります。
そういうときは、colコマンドを用いることで不要なラインフィードやバックスペースを削除します。
colコマンドは標準入力を受付標準出力に出力しますので、 以下のようなコマンドフォーマットとなります。
$ col < 元のファイル名 > 変換後のファイル名
screenlog.0をscreenlog.0.colに変換する場合は以下の通りです。
$ col < screenlog.0 > screenlog.0.col
これをemacsで開くと以下のようになります。
0;user@c6-min:~$ yumKsudo yum installK-y install tcpdump
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: ftp.tsukuba.wide.ad.jp
* extras: ftp.tsukuba.wide.ad.jp
* updates: ftp.tsukuba.wide.ad.jp
Setting up Install Process
Resolving Dependencies
(省略)
Installing : 14:libpcap-1.4.0-1.20130826git2dbcaa1.el6.x86_64########## ] 1/2
Installing : 14:tcpdump-4.0.0-3.20090921gitdf3cb4.2.el6.x86_64######### ] 2/2
Verifying : 14:libpcap-1.4.0-1.20130826git2dbcaa1.el6.x86_64 1/2
Verifying : 14:tcpdump-4.0.0-3.20090921gitdf3cb4.2.el6.x86_64 2/2
Installed:
tcpdump.x86_64 14:4.0.0-3.20090921gitdf3cb4.2.el6
Dependency Installed:
libpcap.x86_64 14:1.4.0-1.20130826git2dbcaa1.el6
Complete!