scriptコマンドで取得したログを綺麗に読む

scriptで取得したログにエスケープシーケンス含まれる場合、単純なテキストとして読むとエスケープシーケンスがESC~のような表示されてしまい読みづらい。 が、less -Rで読むと綺麗に読める。

scriptなどでログを取るときに変な文字(制御文字)のない状態で読めるようにする - Qiita 元ネタは上記の記事

具体例

lessでの表示
[mk55@localhost ~]$ powerofESC[ESC[ESC[ESC[ESC[ESC[ESC[ESC[K^G^G^G^G^G^G^G^G^G^G^GnmclESC[ESC[KllESC[ESC[Ki
ESC[32mvirbr0: connected to virbr0ESC[0m
        bridge, 52:54:00:A1:4E:6E, sw, mtu 1500
        inet4 192.168.122.1/24

ESC[31meno16777736: disconnectedESC[0m
        "Intel 82545EM Gigabit Ethernet Controller (Copper) (PRO/1000 MT Single Port Adapter)"
        1 connection available
        ethernet (e1000), 00:0C:29:53:02:5E, hw, mtu 1500

ESC[2mlo: unmanagedESC[0m
        loopback (unknown), 00:00:00:00:00:00, sw, mtu 65536

ESC[2mvirbr0-nic: unmanagedESC[0m
        tun, 52:54:00:A1:4E:6E, sw, mtu 1500
less -Rでの表示
Script started on Sun 21 May 2017 01:07:50 AM JST
[mk55@localhost ~]$ ^G^G^G^G^G^G^G^G^G^G^Gnmcli
virbr0: connected to virbr0
        bridge, 52:54:00:A1:4E:6E, sw, mtu 1500
        inet4 192.168.122.1/24

eno16777736: disconnected
        "Intel 82545EM Gigabit Ethernet Controller (Copper) (PRO/1000 MT Single Port Adapter)"
        1 connection available
        ethernet (e1000), 00:0C:29:53:02:5E, hw, mtu 1500

lo: unmanaged
        loopback (unknown), 00:00:00:00:00:00, sw, mtu 65536

virbr0-nic: unmanaged
        tun, 52:54:00:A1:4E:6E, sw, mtu 1500

なお、上記ではシンタックスハイライトが効いてしまってわからなくなっているが、less -Rだとカラーエスケープシーケンスも理解して、ちゃんと画面表示に色がつく(lessの場合は単純な白黒表示)。

参考:エスケープシーケンスについて

  1. もう一度基礎からC言語 第47回 特殊な画面制御~コンソール入出力関数とエスケープシーケンス エスケープシーケンスによる画面制御
  2. エスケープシーケンスを体感する - ザリガニが見ていた...。