#概要
エスケープシーケンスを使えば端末エミュレータの出力テキストに色をつけたり形式を変えたりできる。
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