Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

端末の文字列に色をつける

とある拡張のディレクトリ構造を知りたくて、以下のコマンドを叩いたところ……

$ sudo tree -d hurray -o hoge.txt

その出力ファイルhoge.txtが妙な事になっていました。

^[[01;34mhurray^[[00m
├── ^[[01;34mapps^[[00m
│   ├── ^[[01;34mAssociationExample^[[00m
│   ├── ^[[01;34mDataSendExample^[[00m
│   ├── ^[[01;34mGTSManagementExample^[[00m
│   ├── ^[[01;34mSimpleRoutingExample^[[00m
│   ├── ^[[01;34mTest_APL^[[00m
│   └── ^[[01;34mTest_PHY^[[00m
├── ^[[01;34mdoc^[[00m
├── ^[[01;34mtools^[[00m
└── ^[[01;34mtos^[[00m
    ├── ^[[01;34minterfaces^[[00m
    │   ├── ^[[01;34mZigBee^[[00m
    │   │   └── ^[[01;34mnwk^[[00m
    │   └── ^[[01;34mieee802154^[[00m
    │       ├── ^[[01;34mmac^[[00m
    │       └── ^[[01;34mphy^[[00m
    ├── ^[[01;34mlib^[[00m
    │   ├── ^[[01;34mCC2420Radio^[[00m
    │   ├── ^[[01;34mmac^[[00m
    │   ├── ^[[01;34mnwk^[[00m
    │   ├── ^[[01;34mphy_micaz^[[00m
    │   └── ^[[01;34mphy_telos^[[00m
    ├── ^[[01;34mplatform^[[00m
    │   ├── ^[[01;34mavrmote^[[00m
    │   ├── ^[[01;34mmica^[[00m
    │   │   └── ^[[01;34mTinySec^[[00m
    │   ├── ^[[01;34mmica2^[[00m
    │   │   └── ^[[01;34mTinySec^[[00m
    │   ├── ^[[01;34mmicaz^[[00m
    │   ├── ^[[01;34mmsp430^[[00m
    │   ├── ^[[01;34mtelos^[[00m
    │   └── ^[[01;34mtelosb^[[00m
    ├── ^[[01;34msensorboards^[[00m
    │   └── ^[[01;34mmts310^[[00m
    └── ^[[01;34msystem^[[00m

35 directories

実際のターミナル(catとか)では水色っぽい感じで表示されるのですが、nanoではご覧の有様です。

調べたところ、これらの変な記号列はエスケープ記号の類らしいです。
ビープ音だの強制カーソル移動だのができるのは知ってましたが……色もつけられるのですね
端末上で

$ echo -e "\e[31mfoo\e[m" "\e[44m\e[37mbar\e[m"

とやってあげると、"foo"は赤文字で、"bar"は青背景白文字で表示されるはずです。

エスケープシーケンス
@IT:lsコマンドで表示されるファイルの色を変更するには
シェル - echoで文字に色をつける その1 - Miuran Business Systems