1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

エスケープシーケンスで出力の色や書式を変える

Posted at

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

参考文献

この記事は以下の情報を参考に書きました。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?