MySQLのプロンプトの色をシェル側で設定する

MySQLのプロンプトカラーをテストサーバとそれ以外などという形で設定したい場合のメモ。
見つけたやり方は以下。

ただ今回やりたかったのはシェルの環境変数を使ってカラーリングすること。そこで色々ググると以下のページを発見。

上記のページでも書かれている通り、環境変数MYSQL_PS1で設定すればOKなわけだがこのやり方だとエスケープの入力が毎度めんどくさい。新しく設定するときもさくっとコピペできるようにしておきたかった

シェルで特殊文字入力

特殊文字を変数に格納してそれを使って環境変数の設定を行う。
以下を/etc/profileなり~/.bash_profile(bashの場合)なりに追記する。

# mysqlプロンプトのカラー
mycolor=$'\e[1;32m'
clear=$'\e[0m'
export MYSQL_PS1="$mycolor\u@\d \v>$clear"

するとこんな感じになる。

カラーコードは以下。

Black       0;30     Dark Gray     1;30
Blue        0;34     Light Blue    1;34
Green       0;32     Light Green   1;32
Cyan        0;36     Light Cyan    1;36
Red         0;31     Light Red     1;31
Purple      0;35     Light Purple  1;35
Brown       0;33     Yellow        1;33
Light Gray  0;37     White         1;37

MySQLPS1で使える特殊文字は以下を参照。

ちなみに動作はbash/zshで確認済み。他のシェルでもいける記述なのかは調べてない。
というか$'...'特殊文字の設定ができることを知らなかったよ・・・。


[2012-03-21追記]
どうも長いクエリを実行しようとすると折り返しがうまくいかなくて表示が上書きされてしまう。プロンプトの最後を「\n」で改行にすれば問題ないんだけど回避する方法はないものか。
my.cnfで設定しても同様。ググって出てくるようにエスケープ文字入力しても同じ。みんなどうやってるんだろう。