やってみる

アウトプットすべく己を導くためのブログ。その試行錯誤すらたれ流す。

4bitカラーの糖衣構文をつくる

 ANSI Escape CodeにおけるSGRコードを出力する。

成果物

 詳しくはhelp参照。

概要

 ANSI Escape Codeにおける文字、背景、下線の色を4bitカラーで設定するSGRコードを出力する。

 \e[31mで文字色を赤にする。このうち31のSGRコード部分のみ出力する。

 \e[31;42mで文字色=赤、背景色=緑にする。このうち31;42のSGRコード部分のみ出力する。

箇所 コード
文字 \e[3i,\e[9i
背景 \e[4i,\e[10i
下線 \e[58;5;I

 前回、-F,-Bフラグにて高輝度色にしていた。今回はそれを色名の大文字化によって指定するようにした。また、下線の色も指定できるようにした。

 文字=赤、背景=緑、下線=青にするSGRコードを出力する。

color4.sh r g b

 以下のようなSGRコードが出力される。

42;58;5;4;31

 ANSI Escape Codeの書式にして使ってみる。

COLOR="$(color4.sh r g b)"
echo -e "\e[4;${COLOR}mここの色を変える\e[m"

 使いやすくする。

Color4() { echo -e "\e[4;$("$COLOR4" ${@:2})m$1\e[m"; }
Color4 'ここの色を変える' red green blue

 ほかにもred,green,blueなどフルネームも使える。

color4.sh red green blue

 高輝度色にするなら大文字にする

color4.sh R G B
color4.sh RED GREEN BLUE

 文字色を指定したいなら-f、背景色を指定したいなら-b、下線色を指定したいなら-lオプションを使う。

color4.sh -f red
color4.sh -b green
color4.sh -l blue

 インデックス値でも指定できる。015

color4.sh 1 2 4
color4.sh 9 10 12

対象環境

$ uname -a
Linux raspberrypi 5.4.83-v7l+ #1379 SMP Mon Dec 14 13:11:54 GMT 2020 armv7l GNU/Linux