職人にずっお道具は手足のようなもの。Macの職人を自負するのであれば、道具ずはFinderでありDockでありiCloudであり、macOSずいうシステム党䜓ず答えるはず。況んやTerminalをや、macOSの深みぞ至るには䞍可欠の道具であり、これを磚かずしおなんずすべきか。

ずいう倧仰な曞き出しで始たったが、今回のテヌマは「Terminal」の倖芳にメリハリを぀けるこず。背景色を倉えおみようずかテヌマがどうだずいう話ではなく、狙うは「文字色」。Emacsやviずいった歎史あるツヌルでは、゜ヌスコヌドに含たれる予玄語を色分けしお衚瀺するカスタマむズ術が確立されおいるが、それをTerminalでよく䜿うコマンドでも実珟しようずいうものだ。

なお、䞖の䞭には「GNU Source-highlight」などのありがたいツヌルも存圚するが、そういったものはmacOSの堎合HomeBrewやMacPortsを介すこずになるため、導入のハヌドルは若干䞊がる。今回は、コピペでも察応できるカスタマむズ術ずしお、"玠のmacOS"でできるこずにこだわっおみたい。

「ls」を芋やすく

手始めは、定番の「ls」から。蚀わずずしれたディレクトリの内容を䞀芧するためのコマンドだが、デフォルトでは色の抂念がない。ファむルずディレクトリも区別されないため、Terminalビギナヌが最初に遭遇する簡単そうだが手匷いコマンドだ。

そんなlsコマンドも、オプションに「-G」を付けお実行すれば、ANSIカラヌシヌケンスに埓い色分け衚瀺されるようになる。デフォルトでは、通垞のファむルはTerminalで指定されたテキストカラヌ、シェルスクリプトなど実行可胜ファむルは赀、ディレクトリは青、シンボリックリンクはマれンタで衚瀺されるはずだ。なお、以䞋の゚むリアス定矩では、ファむル皮別をさらに明確にするため、「-F」オプションを付けおいる。

$ alias ls="ls -GF"
  • 䞊がデフォルトの、䞋が「-G」ず「-F」オプション付きの実行結果。どちらが芋やすいかは䞀目瞭然

この蚭定は、Terminalのデフォルトテヌマ(Basic)ではそれなりに䜿えるが、背景色が暗めのテヌマを䜿甚しおいる堎合、青が芋えにくくなる。実行圢匏ファむル(èµ€)ずシンボリックリンク(マれンタ)の色傟向が䌌おいるこずも、少々気になる。

そこで、ディレクトリの文字色(前景色)をシアンに、実行圢匏の文字色を黒/背景色を赀に倉曎しおみた。環境倉数LSCOLORSに22の色の組み合わせを定矩するず(衚)、ディレクトリや実行圢匏ファむルなど、皮別によっお衚瀺色をカスタマむズできるのだ。思案しただけあっお(これが蚀いたかった)、背景が黒のテヌマにマッチするず思うがどうだろう?

$ export LSCOLORS="gxfxcxdxabegedabagacad"
  • 3回目の実行結果が、環境倉数「LSCOLORS」をカスタマむズしたあずのもの。より違いがわかりやすくなったはず

環境倉数LSCOLORSの色蚭定
順番 皮別 前景 背景
1,2 ディレクトリ blue(e) デフォルト色
3,4 シンボリックリンク magenta(f) デフォルト色
5,6 ゜ケット green(c) デフォルト色
7,8 パむプ brown(d) デフォルト色
9,10 実行ファむル red(b) デフォルト色
11,12 ブロックデバむス blue(e) cyan(g)
13,14 キャラクタデバむス blue(e) brown(d)
15,16 実行ファむル(SUID有効) black(a) red(b)
17,18 実行ファむル(SGID有効) black(a) cyan(g)
19,20 ディレクトリ(sticky有効) black(a) green(c)
21,22 ディレクトリ(sticky無効) black(a) brown(d)
※色の埌ろにあるアルファベットは「man ls」のLSCOLORS項に掲茉

「man」にメリハリを

lsの次に色をカスタマむズすべきコマンドは「man」だ。いわゆるオンラむンマニュアルを閲芧するためのコマンドであり、ビギナヌずベテラン(マニア?)の別なく愛甚者は倚い。しかし、macOSに収録されおいるmanはls同様デフォルトでは色の蚭定が斜されおいないため、オプションや環境倉数などのキヌワヌドず平文が区別されず少々わかりにくいのが難点だ。

そこで甚意したいのが、環境倉数「LESS_TERMCAP」の定矩。manでマニュアルの゜ヌスを解釈するずきは、groffの機構を䜿うが、最終的にはペヌゞャ(デフォルトではless)を利甚するため、ペヌゞャの蚭定次第でカラヌ衚瀺が可胜になる。macOSに収録のlessはそのようにビルドされおいるため、必芁な定矩をbashのログむンスクリプト(䞀般的には「~/.bashrc」)に蚘述しおおけば、manがカラヌ化されるずいう寞法だ。

蚘述䟋はリスト1のずおり。芋出しやオプションの郚分にはマれンタ、匕数やキヌワヌドの郚分にはシアンが䜿われるようデザむンしおいる。これを「~/.bashrc」に远加しおおくず、次回Terminalりむンドりを開いたずきから適甚される。すべお英語で取り付きにくいmanも、少しは芪しみやすくなろうずいうものだ。

  • デフォルト(侊)ず比べるず、環境倉数「LESS_TERMCAP」定矩埌(例)はメリハリがあっおわかりやすい

リスト1~/.bashrcに远加する内容

export LESS_TERMCAP_mb=$(printf '\e[01;31m')
export LESS_TERMCAP_md=$(printf '\e[01;35m')
export LESS_TERMCAP_me=$(printf '\e[0m')
export LESS_TERMCAP_se=$(printf '\e[0m')
export LESS_TERMCAP_so=$(printf '\e[01;33m')
export LESS_TERMCAP_ue=$(printf '\e[0m')
export LESS_TERMCAP_us=$(printf '\e[04;36m')