Ubuntu 使っていると ANSI エスケープシーケンス使って:
$ echo '\e[32mRED!!!\e[0m'
みたいなことをしても色がつくけれど Mac の echo はだと上手く行かない:
$ echo '\e[32mRED!!!\e[0m'
\e[32mRED!!!\e[0m
対処方法 1. coreutils をインストールする
Ubuntu と同じ coreutils の echo を使う。
MacPorts で入れると、gecho
って名前でインストールされるので、alias echo=gecho
しましょう。
対処方法 2. 書き方を変える
文字列リテラルのまえに $
を書く:
$ echo $'\e[32mRED!!!\e[0m'
$'...'
で括られた文字列は \e
, \a
, \n
などのエスケープを認識してくれるようになります。
ちょっとしたスクリプトで使うならこっち。
POSIX に倣うならどう書くのがいいんだろう。