Bye Bye Moore

猫マンション建築の野望を胸に零細事業主として資本主義の荒波に漕ぎ出したアラサー男の技術メモ

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

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

$ 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