アスキーアートアドベントカレンダー2日目の記事です
シェルで出力(printf)するアスキーアート(テキスト)に色をつける実装です。
前段
以前、「nem.sh」というブロックチェーンを使ったshellスクリプト共有ツールを作成しました。
・nem.sh
https://github.com/scrpgil/nem.sh
そのデモでターミナルにアスキーアートのNEMロゴを表示したいと思いました。また、せっかくなのでモノクロじゃなくて色をつけて表示しようと考えました。色付きの方がCLIツールとはいえ結構豪華な感じになるんじゃないかな?と思って。
方法
shellでprintf出力したいテキストの前に、こんな感じ\033[0;33m
にエスケープすれば色が変わるようです。
[
以降の最初の数値が状態番号、その次の33
がカラーコードになります。
各状態番号、カラーコードの意味はこちらの記事のスクリプトを利用して調べました。
https://qiita.com/soramugi/items/46117274419665e601fa
状態番号
デフォルト状態 00
強調 01
下線 04
点滅 05
色反転 07
塗りつぶし 08 (塗りつぶし 08)
色番号
黒 30 40 31;40 32;00;40
赤 31 41 32;41 33;01;41
緑 32 42 33;42 34;04;42
黄(または茶) 33 43 34;43 35;05;43
青 34 44 35;44 36;07;44
紫 35 45 36;45 37;00;45
シアン 36 46 37;46 30;01;46
白(またはグレー) 37 47 30;47 31;04;47
実装
はい、というわけで実装はこんな感じです。
Y='\033[0;33m'
B='\033[1;34m'
G='\033[1;36m'
N='\033[0m'
![Screen Shot 2018-12-02 at 21.21.52.png](https://qiita-image-store.s3.amazonaws.com/0/165335/653a775c-9ea1-11f4-b576-0be4c630c040.png)
printf " ${Y}sssssssssssss${N}\n"
printf " ${Y}ssssssssssssssss${N} ${B}sssssssssss${N}\n"
printf "${Y}ssssssssssssssss${N} ${B}sssssssssssss${N}\n"
printf "${Y}sssssssssssssss${N} ${B}sssssssssssssss${N}\n"
printf " ${Y}ssssssssssssss${N} ${B}ssssssssssssss${N}\n"
printf " ${Y}sssssssssssss${N} ${B}sssssssssssss${N}\n"
printf " ${Y}'''''''''${N} ${B}ssssssss${N}\n"
printf " ${G}hssssssssssssssss${N} ${B}sssss${N}\n"
printf " ${G}sssssssssssssssssss${N} ${B}sss${N}\n"
printf " ${G}sssssssssssssssss${N} ${B}ss${N}\n"
printf " ${G}sssssssssssssss${N} \n"
printf " ${G}ssssssssssss${N}\n"
printf " ${G}sssssss${N}\n"
printf " ${G}sss${N}\n"
出力
いい感じで色ついてますね!
やはり色が付いている方が映えますね!
まとめ
思っていたよりも簡単に文字に色をつけることができました。
ちなみに、このNEMロゴのアスキーアートは私がコンソール上で下に透過させたものをなぞったものです。エディタはvimを使いました。
意外と簡単に作れますし、アスキーアートがあるとCLIツールとしても映えると思います。自作CLIツールを作っている方は是非ともアスキーアートを作成してツールに追加してみてください。
それでは。