ls
コマンドで出力されるファイルやディレクトリに色をつけたい場合、LS_COLORS
という環境変数にカラー設定を記述することはよく知られていることと思います。
しかし、これをいちいち手動で設定したり追加したりするのは面倒です。
そこで今回はdircolors
というコマンドを用いて、カラー設定を読み込む方法を紹介します。
今回読み込むカラー設定はdircolors-solarizedです。
名前の通り、みんな大好きsolarizedのカラー設定です。
今でもちょくちょく更新されていて、色々な拡張子のファイルを良い感じに色付けしてくれます。
カラー設定の読み込み
では本題のカラー設定の読み込み方法についてです。
dircolors-solarized
はcloneなりDLなりして持ってきてもらうとして、その中にあるdircolors.ansi-universal
というカラー設定を読み込んでみましょう。
eval $(dircolors /path/to/dircolors-solarized/dircolors.ansi-universal)
これだけでLS_COLORS
が設定されます。
(/path/to
の部分は適当に読み替えて下さい)
Mac(BSD系)で使用する方法
続いてMacでもLS_COLORS
を使用する方法です。
LS_COLORS
はGNU版のls
にカラーを設定するための環境変数です。
しかし、MacにはBSD版のls
しか入っていないため、GNU版のls
を入れる必要があります。
(※ BSD版ls
のカラー設定はLSCOLORS
に記述します。ただし記述方法が異なります)
またdircolors
コマンドについてもMacには入っていません。
そこでGNU系のコマンドを集めたcoreutils
をインストールします。
既にインストールしている方も多いと思いますが。。。
homebrewを使用している場合は、以下のコマンドでインストール可能です。
$ brew install coreutils
これで、GNU版lsのgls
とgdircolors
が使用可能になります。
gls
を普段から使用したい場合は、ls
にaliasを設定しておくと良いでしょう。
あとは同様にしてLS_COLORS
を設定します。
eval $(gdircolors /path/to/dircolors-solarized/dircolors.ansi-universal)
zshの補完にも同じ色を設定
zshを使用している場合、補完候補として表示されるファイルやディレクトリにもls
と同じカラーを設定したいと思うでしょう。
そこで以下のように設定することで、簡単にカラー設定を一致させることができます。
if [ -n "$LS_COLORS" ]; then
zstyle ':completion:*' list-colors ${(s.:.)LS_COLORS}
fi
個人的なおすすめとまとめ
最後は個人的なオススメです。
dircolors
で読み込むカラー設定ファイルは、シンボリックリンクを貼ってそちらを読み込むようにすると良いと思います。
カラー設定を変更したい場合は、リンクを張り替えるだけですみます。
$ ln -s /path/to/dircolors-solarized/dircolors.ansi-universal ~/.dircolors
というわけで、最終的には以下の様な設定となります。
# デフォルト設定(別になくても良い)
LS_COLORS="デフォルトの色設定(ご自由に)"
export LS_COLORS
if [ -f ~/.dircolors ]; then
if type dircolors > /dev/null 2>&1; then
eval $(dircolors ~/.dircolors)
elif type gdircolors > /dev/null 2>&1; then
eval $(gdircolors ~/.dircolors)
fi
fi
これを.bashrc
や.zshrc
などに書いておけばよいでしょう。
zshを使用している場合には、先の補完候補の色設定も追加しておきましよう。