LS_COLORSを設定しよう

  • 140
    Like
  • 4
    Comment
More than 1 year has passed since last update.

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のglsgdircolorsが使用可能になります。
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を使用している場合には、先の補完候補の色設定も追加しておきましよう。