> ~/.dirco" />

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

【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: 文字色 / 背景色コード

値(文字)値(背景)
3040
3141
3242
3343
3444
3545マゼンタ
3646シアン
3747

これらのコードは「 ; 」で繋げて記述し複数指定できる。

変更例

例)ディレクトリを太字、下線、文字色シアン

$ echo "DIR 01;04;36" >> ~/.dircolors
$ source ~/.bashrc

例)ディレクトリを太字、文字色赤、背景色白

$ echo "DIR 01;31;47" >> ~/.dircolors
$ source ~/.bashrc

例)通常ファイルを点滅、文字色黄

$ echo "FILE 05;33" >> ~/.dircolors
$ source ~/.bashrc

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