5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

シェルで出力(printf)するアスキーアート(テキスト)に色をつけたい

Last updated at Posted at 2018-12-02

アスキーアートアドベントカレンダー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"

出力

いい感じで色ついてますね!
やはり色が付いている方が映えますね!

Screen Shot 2018-12-02 at 21.21.52.png

まとめ

思っていたよりも簡単に文字に色をつけることができました。

ちなみに、このNEMロゴのアスキーアートは私がコンソール上で下に透過させたものをなぞったものです。エディタはvimを使いました。
Screen Shot 2018-12-02 at 21.41.16.png

意外と簡単に作れますし、アスキーアートがあるとCLIツールとしても映えると思います。自作CLIツールを作っている方は是非ともアスキーアートを作成してツールに追加してみてください。
それでは。

5
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?