文字に色をつける
ほとんどのシェルではシェル上で色をつけることを許容しているので、
ANSI escape codeという規格を通してやれば、様々な色の文字列を生成出来ます。
http://en.wikipedia.org/wiki/ANSI_escape_code
自分の環境でどのような色が使えるかは、
CentOS/RedHat系なら
/etc/DIR_COLORS
などを参照すればわかります。
http://www.atmarkit.co.jp/flinux/rensai/linuxtips/358dircolors.html
ちなみに僕の環境(CentOS)で/etc/DIR_COLORS
は
こんな感じでした。
読んでみると
# Attribute codes:
# 00=none 01=bold 04=underscore 05=blink 07=reverse 08=concealed
# Text color codes:
# 30=black 31=red 32=green 33=yellow 34=blue 35=magenta 36=cyan 37=white
# Background color codes:
# 40=black 41=red 42=green 43=yellow 44=blue 45=magenta 46=cyan 47=white
とのこと、これら
- Attribute codes,
- Text color codes,
- Background color codes,
を組み合わせて文字の色・背景・装飾をいじるみたいです。
echo "\e"
もしくはecho "\033"
で生成するエスケープ文字を(escape)
として(ブラウザで表示できない)
(escape)[(上記の数字);(上記の数字)m (texts..)
などという風に上記の00~08
,30~37
,40~47
の数字を;
で区切って(escape)[
とm
の間に挟めば
その地点より文字の表示の仕方が変更されます。
もとに戻すときは(escape)[0m
とすれば十分です。
なお、属性はあとから上書きされていくため、
こんな風になります。
このサイトを参考にしました。
http://www.linuxquestions.org/questions/linux-software-2/adding-colors-to-your-motd-105038/
シェル上で表示可能な画像
これを応用すると、ログイン時やプログラム実行時に使えるピクセル画像を作れます
AAABBCC
AABBBBD
AAADDDD
のような書き方から上のマリオの画像のようなものを生成