Macのlsの出力をファイルの種類で色分け

Macのターミナルからlsを使ったときに、ファイルやディレクトリなどの種類によって表示を色分けした出力ができます。ですが、Linuxでlsを使うと、これに加えて拡張子も色分けすることができます。

Macでも使える方法はないのかと思ったら、「別のls」を使うことで実現できました(GNUのlsのことなんですが)。

以下はその画面です。

0619

GNU ls(などのツール)をインストール

homebrewを使ってcoreutilsというパッケージ(formula)をインストールします。

brew install coreutils

ちょっと時間がかかりますが、これで関連のコマンドがいろいろ入ります。
そして以下のようなメッセージが。

If you really need to use these commands with their normal names, you
can add a "gnubin" directory to your PATH from your bashrc like:
    PATH="/usr/local/opt/coreutils/libexec/gnubin:$PATH"

coreutilsでインストールされるコマンドはすべて名前の先頭に「g」が付いているのですが(lsならgls)、単にlsとしてglsを呼び出したいなら上のようにパスを設定してね、ということです。gnubinの中では通常の名前から、g**へのシンボリックリンクが張られていました。

今回の目的に使うのは、lsと色の設定に使うdircolorsというコマンドだけなので、dircolorsのGNU版は直接gdircolorsで呼び出して、lsはエイリアスを使うことにしました。

色の設定ファイルを作成

拡張子ごとにどんな色を使うか設定したファイルを作ります。

gdircolors -p

とすると、デフォルトの設定が出力されるので、これを元に好みの設定に直して、適当な名前で保存します。わたしは「.colourrc」という名前でホームディレクトリに保存しました。「colour」なんていうイギリス英語表記なのは、以前参考にした名前をそのまま使っているだけです。

シェルが起動したときに呼び出す設定

bashを使っているので、.bashrcに設定しました。

if [ -x /usr/local/bin/gdircolors ]; then
    eval `gdircolors ~/.colourrc`
    alias ls='gls --color=auto'
fi

gdircolorsがあったら、.colourrcを読み込んで、lsを「gls –color=auto -F」として実行するようにaliasを設定しました。

ちなみに、以前設定した色のセッテイは無効にしておきます。

# export CLICOLOR=1 
# export LSCOLORS=gxfxcxdxbxegedabagacad

if構文のelseの中で設定したほうがいいのかもしれまえんが、とりあえずコメントしました。

使えるターミナルを選ぶ

MacのターミナルやiTermでは数種類のターミナル設定ができます、すべての種類で上の設定が有効になるわけではありません。有効になったのは次の4種類でした。

dterm、vt100、xterm、rxvt

おまけ

以前、Macのlsでは「ls ファイル名 -l」のように最後にオプションを付けると無視されるという記事をかいたのですが、GNUのlsでは、それも可能になりました。

コメント