【linux / bash】lsしたときの表示の色を変える

こんにちは、Mako(@makokamiya)です。
例:lsしたときのディレクトリの色を太字マゼンタに変える場合
$ dircolors -p > ~/.dircolors
$ echo "DIR 01;35" >> ~/.dircolors
$ source ~/.bashrc
解説
ls
したときに出力される情報の色は、環境変数 $LS_COLORS で設定されている。
$ echo $LS_COLORS
# rs=0:
# di=01;34:
# ln=01;36: ....実際は改行されずに表示される
オリジナルのカラー構成情報を $LS_COLOR 変数に再代入して上書きしてもいいが、記述が長くなるのでよろしくないため、カラー構成情報を別ファイルに書き出して、そのファイルを読み込む方法を選択する。
1|$ dircolors -p > ~/.dircolors
dircolors -p
コマンドを使うと、現在読み込まれている標準のカラー構成情報を得ることができる。得たカラー構成情報を ~/.dircolors ファイルに標準出力で書き出している。
(dircolors
コマンドについて詳しくはこちら)
2|$ echo "DIR 01;35" >> ~/.dircolors
オリジナルのカラー構成情報を ~/.dircolors ファイルに追記している。
今回は ls
したときのディレクトリの色を変更したいので、~/.dircolorsファイルの最後の行に「DIR」の値を上書きしている。エディタで「DIR」の値を直接編集しても良い。
(ちなみに、「DIR」の値は ~/.dircolors ファイルが読み込まれると、$LS_COLORSの「di」に設定される。)
他にも、ファイル形式等の表示を設定できる
3|$ source ~/.bashrc
.dircolors ファイルの読み込みは .bashrc ファイルに「eval "$(dircolors ~/.dircolors)"
」とあらかじめ書かれているため、source ~/.bashrc
コマンドで .bashrc ファイルを再読み込みするだけでカラー情報が更新される。
.bashrc ファイルを新しく作っている場合や、.dircolors ファイルの名前が違う場合は編集する。
カラー構成情報の値について
カラー構成情報の詳細については、dircolors -p
コマンドの下記に書かれている。
$ dircolors -p
# ~ 省略 ~
# 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
# ~ 省略 ~
Attribute codes: 文字属性コード
値 | 属性 |
00 | 指定なし |
01 | 太字 |
04 | 下線 |
05 | 点滅 |
07 | 文字色と背景色の逆転 |
08 | 非表示 |
Text color codes: / Background color codes: 文字色 / 背景色コード
値(文字) | 値(背景) | 色 |
30 | 40 | 黒 |
31 | 41 | 赤 |
32 | 42 | 緑 |
33 | 43 | 黄 |
34 | 44 | 青 |
35 | 45 | マゼンタ |
36 | 46 | シアン |
37 | 47 | 白 |
これらのコードは「 ; 」で繋げて記述し複数指定できる。
変更例
例)ディレクトリを太字、下線、文字色シアン
$ echo "DIR 01;04;36" >> ~/.dircolors
$ source ~/.bashrc

例)ディレクトリを太字、文字色赤、背景色白
$ echo "DIR 01;31;47" >> ~/.dircolors
$ source ~/.bashrc

例)通常ファイルを点滅、文字色黄
$ echo "FILE 05;33" >> ~/.dircolors
$ source ~/.bashrc

(私の環境では点滅しなかった)