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が周辺機器とどうやってデータをやりとりしているか、という文脈でエスケープシーケンスが出てきた