プログラムを組んで、 シェルに文字を画面に、 単に出力するだけではなんかつまらない。 色とか付けれたら ちょっとは華やかになりそう。
ということで
シェルへの出力を装飾しよう!
まだ詳細は勉強中ですが、 エスケープシーケンス というものを使って、 文字の装飾をします。
今回はCのプログラムの出力に 装飾を加えたいと思います。
(ターミナル上の出力なので、 C以外でも大丈夫だと思います。)
#include <stdio.h>
int main(int argc, char **argv)
{
puts("\e[31mRed\e[0m");
return 0;
}
$ cc -o color1 color1.c
$ ./color1
Red
$
puts
関数内の 文字列の"Red"を赤文字にします。 \e[31m
で赤に指定します。 \e[0m
で 装飾をリセットします。 エスケープシーケンスの構造としては、 \e[数字;数字;...;数字m
で 以降の文字列を装飾します。 文字色以外にも、太字指定など、 いろいろあります。 例えば、太字、下線、 文字色を水色にするには、 \e[1;4;36m
と指定すれば可能です。 1は太字指定、4は下線指定、 36は文字色を水色に指定します。
puts
関数を puts("\e[1;4;36mHello\e[0m");
と変更
$ cc -o color2 color2.c
$ ./color2
$ Hello
$
文字色や文字の装飾を指定する数字 (引数)は色々あるので、 詳細は割愛。
\e[0m
は、 エスケープシーケンスで指定した装飾を 全部解除します。 これを書いておかないと、 装飾が解除されません。 例えば、 puts("\e[1;4;36mHello");
と書くと、プログラム実行後も ターミナルの文字の装飾が 反映されたままになります。
$ cc -o color3 color3.c
$ ./color3
Hello
$ cat color3.c
#include <stdio.h>
int main(int argc, char **argv)
{
puts("\e[1;4;36mHello");
return 0;
}
$
今回はCで文字装飾を行いましたが、 Perlやシェルスクリプトなどでも、 同様に文字装飾は行えます。
なんとなく書きたいように書いたので、 至らぬ点が多々あるかと思いますが、 とりあえず今回はここまで。