bashの表示色をカスタマイズ

bashは常に開いておく環境なので使いやすくカスタマイズしたいですね。
GitHubで[dotfiles](https://github.com/soramugi/dotfiles)の管理とかしておけば常に自分好みにカスタマイズした環境が再現できるので良いです。
他の方が設定しているファイルを見るのも勉強になって非常に楽しいです。

今回は個人的に色の設定を学んだので軽くまとめておきたいと思います。

色、カラーの設定ですが、自分はその時の気分転換で変えます。

現状の自分の環境だとmacの標準アプリケーション、ターミナルを使っていてテーマが「Grass」ですね。ちょっと透けさせてます。「Red Sands」って赤茶のテーマがあるのですが、最初は赤っぽい背景とかだめかと思ってたけどそこまで見にくくはなかったですね。

ターミナルのテーマ設定を変えてしまうと、今まで設定していた文字色とか見づらくなってしまうんですよね。そのための文字色を変更しやすい環境を構築。

# コマンドインストール

色を設定するときに`dircolors`で設定するのですが、Linuxは`GNU dircolors`が標準で入っているから問題はないんだけど、MacはBSDなので入ってないです。macの方はGNU版のコマンドをまとめてインストールできる`coreutils`をインストールしておきましょう。

    brew install coreutils

そしてパスを通しておく。

```.bashrc
export PATH="$(brew --prefix coreutils)/libexec/gnubin:$PATH"
```

`.bashrc`を再読み込みしておきましょう

# .dir_colors作成

色の設定ファイルの`.dir_colors`を設定しましょう。
自分はお手本としてcent OSのファイルをコピーして後から変更しました。

今の色設定のファイル書き出しは

    dircolors -p

で出力されるかと思います。

自分の設定ファイルは以下

```.dir_colors
# Configuration file for the color ls utility
# This file goes in the /etc directory, and must be world readable.
# You can copy this file to .dir_colors in your $HOME directory to override
# the system defaults.

# COLOR needs one of these arguments: 'tty' colorizes output to ttys, but not
# pipes. 'all' adds color characters to all output. 'none' shuts colorization
# off.
COLOR tty

# Extra command line options for ls go here.
# Basically these ones are:
#  -F = show '/' for dirs, '*' for executables, etc.
#  -T 0 = don't trust tab spacing when formatting ls output.
OPTIONS -F -T 0

# Below, there should be one TERM entry for each termtype that is colorizable
TERM linux
TERM console
TERM con132x25
TERM con132x30
TERM con132x43
TERM con132x60
TERM con80x25
TERM con80x28
TERM con80x30
TERM con80x43
TERM con80x50
TERM con80x60
TERM cons25
TERM xterm
TERM rxvt
TERM xterm-color
TERM color-xterm
TERM vt100
TERM dtterm
TERM color_xterm
TERM ansi
TERM screen
TERM screen.linux
TERM kon
TERM kterm
TERM gnome
TERM konsole

# EIGHTBIT, followed by '1' for on, '0' for off. (8-bit output)
EIGHTBIT 1

# Below are the color init strings for the basic file types. A color init
# string consists of one or more of the following numeric codes:
# Attribute codes:
# 00=none 01=bold 04=underscore 05=blink 07=reverse 08=concealed
# Text color codes:
# 30=black 31=red 32=green 33=yellow 34=blue 35=magenta 36=cyan 37=white
# Background color codes:
# 40=black 41=red 42=green 43=yellow 44=blue 45=magenta 46=cyan 47=white
NORMAL 00       # global default, although everything should be something.
FILE 00         # normal file
DIR 00;33       # directory
LINK 01;36      # symbolic link
FIFO 40;33      # pipe
SOCK 01;35      # socket
BLK 40;33;01    # block device driver
CHR 40;33;01    # character device driver
ORPHAN 01;05;37;41  # orphaned syminks
MISSING 01;05;37;41 # ... and the files they point to

# This is for files with execute permission:
EXEC 01;32


# List any file extensions like '.gz' or '.tar' that you would like ls
# to colorize below. Put the extension, a space, and the color init string.
# (and any comments you want to add after a '#')
.cmd 01;32 # executables (bright green)
.exe 01;32
.com 01;32
.btm 01;32
.bat 01;32
.sh  01;32
.csh 01;32
.tar 01;31 # archives or compressed (bright red)
.tgz 01;31
.arj 01;31
.taz 01;31
.lzh 01;31
.zip 01;31
.z   01;31
.Z   01;31
.gz  01;31
.bz2 01;31
.bz  01;31
.tz  01;31
.rpm 01;31
.cpio 01;31
.jpg 01;35 # image formats
.gif 01;35
.bmp 01;35
.xbm 01;35
.xpm 01;35
.png 01;35
.tif 01;35

# vim:ft=dircolors
```

`$HOME/.dir_colors`としてでも保存しておきましょう。

# 色の編集

色の編集は色コードの指定で編集できます。
`.dir_colors`に以下のような記述があると思いますが、何となく意味が解るかと思います。

```.dir_colors
DIR 00;33       # directory
LINK 01;36      # symbolic link
```

directoryが`00;33`の色コードにするって記述ですね。
ファイルの拡張子によっても色の表示を変えられるようです。

色コードは

```
# Attribute codes:
# 00=none 01=bold 04=underscore 05=blink 07=reverse 08=concealed
# Text color codes:
# 30=black 31=red 32=green 33=yellow 34=blue 35=magenta 36=cyan 37=white
# Background color codes:
# 40=black 41=red 42=green 43=yellow 44=blue 45=magenta 46=cyan 47=white
```

の記述のように設定してあげれば良いです。

自分が書いた以下の記事のようなスクリプトを用意しておくと便利かもしれません。

[bashで16色表示するスクリプト用意しておくと便利](http://qiita.com/soramugi/items/46117274419665e601fa)
[bashで256色表示するスクリプト用意しておくと便利](http://qiita.com/soramugi/items/ab82f30a5906851472cc)

vimで編集するのであれば、標準のカラースキーマが用意されてるので、記述した色コードが、色コードままの色になるので簡単に表示が見れて便利だと思われます。

# 色の反映

`.bashrc`に読み込む記述を設定すればターミナルを開けば色の設定が反映されています。

```.bashrc
if type -P dircolors >/dev/null ; then
  eval `dircolors $HOME/.dir_colors`
fi
```

# おしまい

カジュアルに色を変えやすくする環境を整えて、見やすい色にしたり、気分を変えてみてください。

以上！