モノクロなls
ターミナルで使われるコマンドの代表といえばls。なにも設定しなければ図1.1のように表示される。モノクロ悪くはないが、やはり、カラーの方が一目見て概要をつかみやすい。今回はカラー表示についてかいてみよう。
図1.1 なにも設定しなければモノクロな世界 – 渋すぎると言わざるとえない |
カラーなls - FreeBSD
lsコマンドの出力をモノクロからカラーに変える方法は、lsコマンドの実装ごとに異なる。FreeBSDのlsコマンドならリスト2.1のように設定すればいい。環境変数LSCOLORSに色を指定して、コマンドの引数に-Gだ。
リスト2.1 FreeBSDでlsをカラー表示
export LSCOLORS=exfxcxdxbxegedabagacad
alias ls="ls -G"
図2.2 FreeBSD lsでカラー表示 |
環境変数LSCOLORSにおいて指定している文字はそれぞれの色を表している。1つめから順にリスト2.3のように設定されている。指定する色はリスト2.4のように文字に割り当てられているので、このふたつを組み合わせてLSCOLORSを設定すればいい。
リスト2.3 環境変数LSCOLORSの意味
- 01: ディレクトリ前景色
- 02: ディレクトリ背景色
- 03: シンボリックリンク前景色
- 04: シンボリックリンク背景色
- 05: ソケットファイル前景色
- 06: ソケットファイル背景色
- 07: FIFOファイル前景色
- 08: FIFOファイル背景色
- 09: 実行ファイル前景色
- 10: 実行ファイル背景色
- 11: ブロックスペシャルファイル前景色
- 12: ブロックスペシャルファイル背景色
- 13: キャラクタスペシャルファイル前景色
- 14: キャラクタスペシャルファイル背景色
- 15: setuidつき実行ファイル前景色
- 16: setuidつき実行ファイル背景色
- 17: setgidつき実行ファイル前景色
- 18: setgidつき実行ファイル背景色
- 19: スティッキビットありother書き込み権限つきディレクトリ前景色
- 20: スティッキビットありother書き込み権限つきディレクトリ背景色
- 21: スティッキビットなしother書き込み権限つきディレクトリ前景色
- 22: スティッキビットなしother書き込み権限つきディレクトリ背景色
表2.4 環境変数LSCOLORSで指定する色
- a: 黒
- b: 赤
- c: 緑
- d: 茶
- e: 青
- f: マゼンタ
- g: シアン
- h: 白
- A: 黒(太字)
- B: 赤(太字)
- C: 緑(太字)
- D: 茶(太字)
- E: 青(太字)
- F: マゼンタ(太字)
- G: シアン(太字)
- H: 白(太字)
- x: デフォルト色
カラーなls - FSF coreutils
FSFから配布されている基本コマンド群であるcoreutilsの例もあげておく。リスト3.1のように設定すればよく、使用する環境変数はLS_COLORSだ。ここではglsとしているが、coreutilsをシステムベースのコマンド群として採用しているディストリビューションではlsとしてインストールされているので、glsをlsに読みかえてほしい。
リスト3.1 FSF coreutils lsをカラー表示
export LS_COLORS='di=34:ln=35:so=32:pi=33:ex=31:bd=46;34:cd=43;34:su=41;30:sg=46;30:tw=42;30:ow=43;30'
alias gls="gls --color"
図3.2 FSF coreutils lsでカラー表示 |
環境変数LS_COLORSでは対象と色を=で結びつけて設定する。指定する対象はリスト3.3のように2文字の短縮文字列、色はリスト3.4のような数字で指定する。指定方法や短縮名、色番号はこれ以外のコマンドでも同じものを使うことが多いので、覚えておくといい。
リスト3.3 環境変数LS_COLORSで使う対象のうち代表的なもの
- di: ディレクトリ
- ln: シンボリックリンク
- so: ソケットファイル
- pi: FIFOファイル
- ex: 実行ファイル
- bd: ブロックスペシャルファイル
- cd: キャラクタスペシャルファイル
- su: setuidつき実行ファイル
- sg: setgidつき実行ファイル
- tw: スティッキビットありother書き込み権限つきディレクトリ
- ow: スティッキビットなしother書き込み権限つきディレクトリ
リスト3.4 環境変数S_COLORSで指定する色
- 00: なにもしない
- 01: 太字化
- 04: 下線
- 05: 点滅
- 07: 前背色反転
- 08: 表示しない
- 22: ノーマル化
- 24: 下線なし
- 25: 点滅なし
- 27: 前背色反転なし
- 30: 黒(前景色)
- 31: 赤(前景色)
- 32: 緑(前景色)
- 33: 茶(前景色)
- 34: 青(前景色)
- 35: マゼンタ(前景色)
- 36: シアン(前景色)
- 37: 白(前景色)
- 39: デフォルト(前景色)
- 40: 黒(背景色)
- 41: 赤(背景色)
- 42: 緑(背景色)
- 43: 茶(背景色)
- 44: 青(背景色)
- 45: マゼンタ(背景色)
- 46: シアン(背景色)
- 47: 白(背景色)
- 49: デフォルト(背景色)
カラーなzsh補完候補一覧
やることはまだ残っている。zsh補完候補の一覧表示はなにも設定しなければ図4.1のようにモノクロ表示だ。zshはこの補完候補表示もカラーにする機能を提供している。
図4.1 なにも設定しなければzshの補完候補一覧はモノクロだ – やはり渋いと言わざるをえない |
補完候補のカラー表示は補完機能の読み込みとzstyleの設定でおこなう。リスト4.2のように設定すればいい。
リスト4.2 zsh補完候補一覧をカラー表示する方法
autoload -U compinit
compinit
zstyle ':completion:*' list-colors ''
図4.3 zsh補完候補一覧でカラー表示 |
さて仕上げだ
lsコマンドとzsh補完候補一覧の両方でカラー表示を設定したら、最後に表示される色の整合性をとっておきたい。補完候補一覧とlsコマンドの表示で色が違っているとちょっと混乱する。
リスト5.1 lsコマンドとzsh補完候補の色をそろえる設定
autoload -U compinit
compinit
export LSCOLORS=exfxcxdxbxegedabagacad
export LS_COLORS='di=34:ln=35:so=32:pi=33:ex=31:bd=46;34:cd=43;34:su=41;30:sg=46;30:tw=42;30:ow=43;30'
alias ls="ls -G"
alias gls="gls --color"
zstyle ':completion:*' list-colors 'di=34' 'ln=35' 'so=32' 'ex=31' 'bd=46;34' 'cd=43;34'
図5.2 FreeBSD ls、FSF coreutils ls、zsh補完候補一覧のカラーを統一 |
もう一歩進んだ設定
だいたい上記設定まですれば上出来だが、ツールにこだわりを見せるzsherとしてはさらに一歩突っ込んだ設定をしておきたい。
これまで紹介した色設定はFreeBSD lsで設定されているデフォルトの色に合わせたものだが、背景色が白のターミナルでは視認値が良いものの、コンソールのように背景色が黒いターミナルでは若干見にくい。カラーテーマを保ったまま、黒いターミナルでも視認値の高い設定をしよう。
リスト6.1 背景が白いターミナル(xterm系)と黒いターミナル(コンソール)で設定を若干変更
case "${TERM}" in
kterm*|xterm*)
export LSCOLORS=exfxcxdxbxegedabagacad
export LS_COLORS='di=34:ln=35:so=32:pi=33:ex=31:bd=46;34:cd=43;34:su=41;30:sg=46;30:tw=42;30:ow=43;30'
zstyle ':completion:*' list-colors 'di=34' 'ln=35' 'so=32' 'ex=31' 'bd=46;34' 'cd=43;34'
;;
cons25)
unset LANG
export LSCOLORS=ExFxCxdxBxegedabagacad
export LS_COLORS='di=01;34:ln=01;35:so=01;32:ex=01;31:bd=46;34:cd=43;34:su=41;30:sg=46;30:tw=42;30:ow=43;30'
zstyle ':completion:*' list-colors 'di=;34;1' 'ln=;35;1' 'so=;32;1' 'ex=31;1' 'bd=46;34' 'cd=43;34'
;;
esac
これでウィンドウ環境から活用する場合でも、コンソールから作業する場合でも同じように扱えるというというものだ。