ターミナルにechoで色のついた文字を出力する[サンプルスクリプトあり]


文字装飾のエスケープコード

echoコマンドでターミナル出力に装飾を付けるにはエスケープコードを使用する。
echo コマンドでエスケープコードを有効にするオプションは -e である。

文字装飾の書き方:

echo -e '<Esc>[{文字属性};{文字の色};{背景の色}mここに文字[m'

bash環境で<Esc>の文字は次のシンタックスが当てられている。

  • \e
  • \033
  • \x1B

以下の例ではエスケープ文字にに\eを使っています。

赤い背景に白色で太字の文字をechoする例;


echo -e '\e[1;37;41mここに文字\e[0m'    

文字属性

文字属性にはSetとResetの属性がある。
それぞれの属性がサポートされているかはターミナルによって異なる。
Setはその属性を適用する場所に、Resetは属性の適用範囲の終端に書く。


echo -e "属性なし \e[1mここから太字 \e[21mここから太字属性なし"

Set

コード 説明
1 太字/明るく
2 暗く
4 下線
5 点滅
7 文字色と背景色を反転
8 表示しない(パスワードなどに使う)

Reset

コード 説明
0 すべての属性をリセット
21 太字/明るくをリセット
22 暗くをリセット
24 下線をリセット
25 点滅をリセット
27 文字色と背景色の反転をリセット
27 表示隠しをリセット

8bit, 16bitカラー

以下の8bit, 16bitカラーは多くのターミナルで使用可能である。

文字色

コード 説明
39 デフォルトの文字色
30 Black
31 Red
32 Green
33 Yellow
34 Blue
35 Magenta
36 Cyan
37 Light gray
90 Light gray
91 Light red
92 Light green
93 Light yellow
94 Light blue
95 Light magenta
96 Light cyan
97 White

背景色

コード 説明
49 デフォルトの背景色
40 Black
41 Red
42 Green
43 Yellow
44 Blue
45 Magenta
46 Cyan
47 Light gray
100 Light gray
101 Light red
102 Light green
103 Light yellow
104 Light blue
105 Light magenta
106 Light cyan
107 White

88bit/256bitカラー

いくつかのターミナルは88bitまたは256bitカラーをサポートしている。

文字色

256bitカラーの文字色は1〜255の色番号を次の形式で指定する。

<Esc>[38;5;色番号m

terminal_256_foreground_color

背景色

256bitカラーのの背景色は1〜255の色番号を次の形式で指定する。

<Esc>[48;5;色番号m

terminal_256_background_color

カラーテーブル表示スクリプト


#!/bin/zsh

#renderforegroundcolor
line='';
fornumin`seq1256`;do
line=$line"\e[38;5;"$num"m"$num"\t\e[0m"
row=`expr$num%16`
if[$row=0];then
echo-e$line
line=''
fi
done

echo#newline

#renderbackgroundcolor
line2='';
fornumin`seq1256`;do
line2=$line2"\e[48;5;"$num"m"$num"\t\e[0m"
row=`expr$num%16`
if[$row=0];then
echo-e$line2
line2=''
fi
done

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です