2006年11月16日
カラフル端末で視認性を高める - grepとシェルのプロンプト編
grep
このブログに含まれる「DSAS」という文字列をgrepしてみます。

どこに「DSAS」があるのかさっぱりわかりません (^^;
grepの結果を
| less -p DSAS
とかに渡せばlessがハイライトして識別しやすくなるのですが、ここはgrepのカラフル機能(--color=auto
)を使ってみます。
だいぶ識別しやすくなりました。
ハイライトの色を変更するには、色指定を環境変数GREP_COLORにセットします。指定の形式は前回紹介したlsのdircolorsと同じです。例えば、太字の黄色にしたい場合はこのようにします。
export GREP_COLOR='01;33'
あと、毎回
--color=auto
と指定するのは面倒なので、環境変数GREP_OPTIONSにセットしておきましょう。GREP_OPTIONSにセットしたオプションは、暗黙的に効果を発揮します。export GREP_OPTIONS='--color=auto'

これで、ざっと見たときの認識性がだいぶ上がりましたね。
ちなみに、grepの結果をページャに渡して、ページャの中でもハイライトしたいときは、
--color=always
にして、lessならば-Rオプションを、lvならば-cオプションを指定すればOKです。$ w3m -dump http://dsas.blog.klab.org/ | grep --color=always DSAS | less -R
$ w3m -dump http://dsas.blog.klab.org/ | grep --color=always DSAS | lv -c
プロンプト
お次はシェル(bash)のプロンプトをカラフルにしてみます。
プロンプトのぱっと見の視認性を高めて何が期待できるかというと、
- 一般ユーザのつもりで実行したのに実はrootになっていて、いけないことになってしまった
- ホストAのつもりで実行したので実はホストBで、いけないことになってしまった
という事故を未然に防ぐためです。トラブったりして焦っているときこそこういうポカミスをしがちなので、ぱっと見の視認性を高めるのは結構、効果があるんじゃないかと思います。
例えば、こんな殺風景なプロンプト
USER@HOST:~$ echo $PS1
\u@\h:\w\$
の、ホスト名の部分の色をシアンにするにはこのようにします。
USER@HOST:~$ PS1='\u@\[\e[36m\]\h\[\e[0m\]:\w\$ '
USER@HOST:~$
いきなりヤヤこしいのが出てきましたが、色を付けたい部分を
\[\e[36m\]
と
\[\e[0m\]
とで囲んでいるだけです。で、「36」が色の指定で、36はシアンを示します。
エスケープシーケンスにはいろいろありますので、詳しくは
を参照してください。
Bash Prompt HOWTOではエスケープを表すのに「\033」としていますが、最近のbashでは「\e」と表記することもできます。
最後にこんな感じにカラフルにしてますという例を。
一般ユーザとrootとで色を変える

拠点データセンタごとにホスト名の色を変える

トラックバックURL
この記事へのトラックバック
1. Unixコマンドの色づけ色々 [ とある技術者の日記 ] 2011年11月13日 12:14
最近、自分の中でターミナル上で色づけするが流行っています。
というよりほんのちょっとの改善を考えて、実践するのが楽しくてやっています。
ほんの少しかもしれませんが、誤認が減るので地味に良いで...