grc(Generic Colouriser)を使ってMySQLのクエリ結果に色を付ける方法の紹介です。
この投稿はMySQL Casual Advent Calendar 2014の7日目の記事です。
grcのインストール
Linuxの場合は ~/.bashrc に一例として下記のシェルスクリプトを追記し、実行してください。
if which grc >/dev/null 2>&1 ; then : else wget http://kassiopeia.juls.savba.sk/~garabik/software/grc/grc_1.5.tar.gz tar zxvf grc_1.5.tar.gz cd grc-1.5 sudo sh ./install.sh sudo wget -O /usr/share/grc/conf.mysql https://raw.githubusercontent.com/nitso/colour-mysql-console/master/.grcat >/dev/null 2>&1 cd ../ rm -rf ./grc?1.5* fi
Macの場合は homebrew でインストールできるようです。(私は試していません)
brew install grc
grc にパスが通っていれば、grcのインストールは完了です。
which grc => /usr/bin/grc
最後に、~/.my.cnf に下記のコードを追記してください。less のオプションは -R が最低限あれば大丈夫です。
[mysql] pager = grcat /usr/share/grc/conf.mysql | less -iMSx4 -FX -R
ここまでの手順を正しく終えていれば、MySQLコンソールで実行したクエリ全てに色が付きます。
やっていること
grc をインストールすることで、grcコマンドとgrcatコマンドがインストールされます。
その後、MySQLのpagerにgrcatとconf.mysqlを指定することで、クエリ結果への色付けを実現しています。
grcとgrcatの違いですが、grc自体は汎用的な色付けツールを意図しており、grcはconfを自動で見付ける、grcatはconf指定が必須、という違いがあるようです。
汎用的な色付けツールなので、grcは一例としてこういう使い方もできるようです。
grc netstat grc ping hostname grc tail /var/log/syslog grc ps aux
今回使ったMySQLの色付けルールは、grcの作者とは別の人物が書いたものです。気になった方は、独自のルールを書いてgrcの普及に貢献するとよいかもしれません。
さらに詳しいgrcの使い方については、 grcのgrcの公式ドキュメントをご参照ください。
参考リンク
http://kassiopeia.juls.savba.sk/~garabik/software/grc/README.txt
nitso/colour-mysql-console · GitHub
OS X Lion Terminal Colours - Noise & Heat
最後に:この記事を読んだ人に1つ質問です
MySQL5.6クライアントのプロンプト(クエリ結果ではない)に色を付ける方法をどなたかご存知ないですかね?
5.6になり、readlineの代わりにeditlineを使うようになった影響なのか、MYSQL_PS1を使った色付けが出来なくなってしまいました…。
export MYSQL_PS1=$(echo -e "\\e[1;33mmysql[\\d]\\e[0m\\n> ") # これが使えない
どなたか代わりの方法を知っている人がいたらご教示いただけるとありがたいです…(^^)