作業ノート

様々なまとめ、雑感など

grepコマンドに色をつける

$ grep --color=auto foo *

colorオプションで該当部分やファイル名などを色づけする。

環境変数GREP_OPTIONSを設定すると、コマンド実行時に設定したオプションが適用される。

# ~/.bashrc
export GREP_OPTIONS='--color=auto' 

# 実行時に--color=autoが適用される
$ grep foo * 

GREP_OPTIONSを設定している状態でgrepコマンドにcolorオプションを指定すると、コマンドのオプションが適用される。

# GREP_OPTIONS='--color=auto' を設定していても--color=neverが適用される
$ grep --color=never foo *

colorオプションには、never(色をつけない)、auto(可能なら色をつける)、always(いつでも色をつける)が指定できる。

autoの場合、grepコマンドを単体で使用した場合は色づけするが、grepの結果をリダイレクトしたり、パイプで別のコマンドに渡す場合は色づけされない(grepの結果に色づけのエスケープシーケンスがつかない)。

alwaysの場合、リダイレクトやパイプの使用でも色づけされる。検索結果に色づけのエスケープシーケンスがつくので、検索結果を使って後続処理を行う場合、エスケープシーケンスが原因で期待した結果が得られないこともあるので注意。

環境変数GREP_COLORで、色の指定ができる。

参考