KDOC 175: ANSIエスケープシーケンスのスタイリングを理解する
この文書のステータス
- 作成
- 2024-05-18 貴島
 
- レビュー
- 2024-05-20 貴島
 
概要
仮想ターミナル上で制御コードを使うと、インタラクティブにしたり、文字に色をつけたりと多少リッチにできる。記法はあまり直感的でないように見える。意味を理解する。
printf "\033[36mhello\033[0m"
意味
\033[36mhello\033[0m を分解していく。
- \033- \0はヌル文字で、次の文字が8進数であることを示す
- 8進数の33は ANSIエスケープシーケンスの制御文字でESCにあたる
- われわれがパソコンでエスケープキーを打ったとき、キーボードは制御文字 \033を送出している
- 別の例: \xの場合は次の文字を16進数として解釈するので、\x1bでも同じ意味になる
 
- [36m- [{色}m という形で、テキストのスタイル変更を開始することを示す
- 変更できる項目はほかにたくさんある。割愛
- 36は色(シアン)を示す
- 別の例: 黒は30なので、 [30mとなる
 
- hello- 見たままの文字列。↑でスタイル変更が開始されているので、指定色で表示される
 
- \033- 上で述べたのと同じ、次に現れるバイト列を8進数として解釈する
 
- [0m- テキストスタイルのリセットを示す
 
関連
- KDOC 140: 『自作エミュレータで学ぶx86アーキテクチャ』。in/out命令で、CPUが周辺機器とどうやってデータをやりとりしているか、という文脈でエスケープシーケンスが出てきた