Linux‎ > ‎

シェル - echoで文字に色をつける その2


目次


シェル - echoで文字に色をつける その1」では、echoで色をつける際の基本的な書き方について説明しました。

しかしそれぞれの色指定をどのように表現するかは、端末の機能や設定に依存します。端末により他の属性と同じ表現になっていたり、実装されておらず無視されるケースもあります。このページでは一つの具体例として、(私がよく使う)「PuTTY 0.56」での表現とデフォルト値について説明します。このページの記述はすべて「PuTTY 0.56」についての事柄であり、他の端末で同じである保証はありません。


「PuTTY 0.56」で「1」のbold指定をすると太字で表現するわけではなく、文字色をBold色で表示します。「5」のblink指定をすると点滅するわけではなく、背景色をBold色で表示します。つまり、boldを指定したときの文字色と、blinkを指定したときの背景色は同じ色合いになります。

Bold色は元の色よりも薄い色が設定されているため、文字色を明るくしたければ「1」を、背景色を明るくしたければ「5」を指定すればいいことになります。

※ただし、blinkで背景色が変わるのはPuTTYのデフォルトの設定の場合です。「設定変更」→「端末」→「テキストの点滅を有効にする」にチェックを入れると、背景色は変わらずに文字が点滅するようになります。


以下に「PuTTY 0.56」の、色合い表現のデフォルト設定と属性指定時の振舞いを示します。
Color RGB値 sample
Black (0, 0, 0)
Black Bold (85, 85, 85)
Red (187, 0, 0)
Red Bold (255, 85, 85)
Green (0, 187, 0)
Green Bold (85, 255, 85)
Yellow (187, 187, 0)
Yellow Bold (255, 255, 85)
Blue (0, 0, 187)
Blue Bold (85, 85, 255)
Magenta (187, 0, 187)
Magenta Bold (255, 85, 255)
Cyan (0, 187, 187)
Cyan Bold (85, 255, 255)
White (187, 187, 187)
White Bold (255, 255, 255)

属性番号 attributes 属性 PuTTY 0.56での振舞い
1 bold 太字 文字色をBold色・明るい色に
2 low intensity 弱強調 文字色をBold色・明るい色に
4 underline 下線 下線
5 blink 点滅 背景色をBold色・明るい色に
7 reverse video 反転 文字色と背景色を反転
8 invisible text 非表示 無影響


繰り返しになりますが、どの属性が使えるか・どのように表現されるかは端末や設定によって異なります。お使いの端末で以下のシェルを実行することにより、どのような色や属性が使えるかを確認できます。
clear
esc="\e["
for fore in 30 31 32 33 34 35 36 37; do
	line0="${fore}  "
	line1=";1  "
	line4=";4  "
	line5=";5  "
	line7=";7  "
	line8=";8  "

	for back in 40 41 42 43 44 45 46 47; do
		line0="${line0}${esc}${back};${fore}m Normal    ${esc}m"
		line1="${line1}${esc}${back};${fore};1m Bold      ${esc}m"
		line4="${line4}${esc}${back};${fore};4m Under bar ${esc}m"
		line5="${line5}${esc}${back};${fore};5m Blink     ${esc}m"
		line7="${line7}${esc}${back};${fore};7m Reverse   ${esc}m"
		line8="${line8}${esc}${back};${fore};8m Concealed ${esc}m"
	done

	echo "     40         41         42         43         44         45         46         47"
	echo -e "${line0}"
	echo -e "${line1}"
	echo -e "${line4}"
	echo -e "${line5}"
#	echo -e "${line7}"
#	echo -e "${line8}"
done

次のページ「シェル - echoで文字に色をつける その3」では、これまでに紹介した属性に加え、さらに多くの属性についてお伝えします。

※このページでは、echoの属性指定を指す場合には「blink」「bold」などのように lowerCamelで、PuTTYの設定を指す場合には「Blink」「Bold」などのようにUpperCamelで表記し分けています。仕様を定めたドキュメント(ECMA-48)上はlowerCamelで、PuTTYの設定画面上はUpperCamelで表記されていた為、両者を区別する為と、オリジナルの表記を正確に表現する為に表記し分けています。

参考URL

2011/06/09