Quantcast
Channel: Bashタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 2815

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

$
0
0

概要

エスケープシーケンスを使えば端末エミュレータの出力テキストに色をつけたり形式を変えたりできる。
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意味結果
30echo "^V^[[30mHello World^V^[[0m"Hello World
31echo "^V^[[31mHello World^V^[[0m"Hello World
32echo "^V^[[32mHello World^V^[[0m"Hello World
33echo "^V^[[33mHello World^V^[[0m"Hello World
34echo "^V^[[34mHello World^V^[[0m"Hello World
35echo "^V^[[35mHello World^V^[[0m"Hello World
36シアンecho "^V^[[36mHello World^V^[[0m"Hello World
37echo "^V^[[37mHello World^V^[[0m"Hello World

- 背景色(基本)

n意味結果
40echo "^V^[[40mHello World^V^[[0m"
41echo "^V^[[41mHello World^V^[[0m"
42echo "^V^[[42mHello World^V^[[0m"
43echo "^V^[[43mHello World^V^[[0m"
44echo "^V^[[44mHello World^V^[[0m"
45echo "^V^[[45mHello World^V^[[0m"
46シアンecho "^V^[[46mHello World^V^[[0m"
47echo "^V^[[47mHello World^V^[[0m"

注意

  • コマンドラインからエスケープ文字をそのまま入力する時は、「^V」に続けて「esc」を押す。「^V」は画面には表示されない。
  • エスケープシーケンスの終わりに「[0m」を入力しないと、下記のように出力後も文字色が赤のままになる。
$ echo"^V^[[31mHello World"

結果
$
$ whoami

参考文献

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


Viewing all articles
Browse latest Browse all 2815

Trending Articles