概要
エスケープシーケンスを使えば端末エミュレータの出力テキストに色をつけたり形式を変えたりできる。
macのターミナルで試してみたのでメモ書き。
環境
bashシェルであれば動作可能。
確認方法
$ echo $SHELL
環境変数$SHELLが設定されていなければ
$ ps -p $$
使い方
下記のようにechoコマンドとそれぞれ組み合わせて使います。
$ echo エスケープ文字 SGR (対象文字列)
サンプル
echo オプションなし
$ echo "^V^[[31mHello World^V^[[0m"
結果
$ Hello World
echo -e オプション付き
$ echo -e "\x1b[34mHello World\x1b[0m"
結果
$ Hello World
記号の解説
echoコマンドでは-eオプションの有無でエスケープ文字の入力方法が異なります。
共通部分
- [31m , [34m , [0m
- - SGR(Select Graphic Rendition)。「[nm」の組み合わせで使用する。
- - nの値を変えることで文字色、フォント、背景色など指定できる。
echo オプションなし
- ^V
- - コマンドラインからエスケープ文字を入力する際に必ず必要な入力。
- -「ctrl + v」で入力できる。
- ^[
- - エスケープ文字。
- -「esc」で入力できる。
- \x1b
- - エスケープ文字
- -「esc」はアスキーコード27であルため、8進数の\033や16進数の\x1bも使用できる。
SGR(Select Graphic Rendition)
「 [nm 」のnの値を変えることで書式やフォントを変えることができる。
書式
- set
| n | 意味 | 例 | 結果 |
|---|---|---|---|
| 1 | 太字 | echo "^V^[[1mHello World" | Hello World |
| 2 | 薄い | echo "^V^[[2mHello World" | Hello World |
| 4 | 下線 | echo "^V^[[4mHello World" | |
| 5 | 点滅 | echo "^V^[[5mHello World" | |
| 7 | 色反転 | echo "^V^[[7mHello World" | |
| 8 | 隠す | echo "^V^[[8mHello World" |
- reset
| n | 意味 | 例 | 結果 |
|---|---|---|---|
| 0 | 全ての設定をリセット | echo -e "\x1b[34mHello World\x1b[0m" | |
| 21 | 太字の設定をリセット | echo -e "\x1b[1mHello World\x1b[21m" | |
| 22 | 薄い設定をリセット | echo -e "\x1b[2mHello World\x1b[22m" | |
| 24 | 下線の設定をリセット | echo -e "\x1b[4mHello World\x1b[24m" | |
| 25 | 点滅の設定をリセット | echo -e "\x1b[5mHello World\x1b[25m" | |
| 27 | 色反転の設定をリセット | echo -e "\x1b[7mHello World\x1b[27m" | |
| 28 | 隠すの設定をリセット | echo -e "\x1b[8mHello World\x1b[28m" |
色指定
- 文字色(基本)
| n | 意味 | 例 | 結果 |
|---|---|---|---|
| 30 | 黒 | echo "^V^[[30mHello World^V^[[0m" | Hello World |
| 31 | 赤 | echo "^V^[[31mHello World^V^[[0m" | Hello World |
| 32 | 緑 | echo "^V^[[32mHello World^V^[[0m" | Hello World |
| 33 | 黄 | echo "^V^[[33mHello World^V^[[0m" | Hello World |
| 34 | 青 | echo "^V^[[34mHello World^V^[[0m" | Hello World |
| 35 | 紫 | echo "^V^[[35mHello World^V^[[0m" | Hello World |
| 36 | シアン | echo "^V^[[36mHello World^V^[[0m" | Hello World |
| 37 | 白 | echo "^V^[[37mHello World^V^[[0m" | Hello World |
- 背景色(基本)
| n | 意味 | 例 | 結果 |
|---|---|---|---|
| 40 | 黒 | echo "^V^[[40mHello World^V^[[0m" | |
| 41 | 赤 | echo "^V^[[41mHello World^V^[[0m" | |
| 42 | 緑 | echo "^V^[[42mHello World^V^[[0m" | |
| 43 | 黄 | echo "^V^[[43mHello World^V^[[0m" | |
| 44 | 青 | echo "^V^[[44mHello World^V^[[0m" | |
| 45 | 紫 | echo "^V^[[45mHello World^V^[[0m" | |
| 46 | シアン | echo "^V^[[46mHello World^V^[[0m" | |
| 47 | 白 | echo "^V^[[47mHello World^V^[[0m" |
注意
- コマンドラインからエスケープ文字をそのまま入力する時は、「^V」に続けて「esc」を押す。「^V」は画面には表示されない。
- エスケープシーケンスの終わりに「[0m」を入力しないと、下記のように出力後も文字色が赤のままになる。
$ echo "^V^[[31mHello World"
結果
$
$ whoami
参考文献
この記事は以下の情報を参考に書きました。
- bash:tip_colors_and_formatting - FLOZz' MISC
https://misc.flogisoft.com/bash/tip_colors_and_formatting