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
    • テキストスタイルのリセットを示す

参考

関連