File Nameの色

端末を開いて”ls -al”と入力するとFile一覧が表示されるのですが、

File Name(又はDirectory)に色がついている事が分かります。あまり端末を使わなかったので気にして無かったのですがこの色分けには意味が有るようです。

カラー設定一覧を表示する

端末で、”dircolors –print-database” と入力すると現在のカラー設定一覧が見れる。

pi@raspberrypi:~/samp $ dircolors --print-database

# Configuration file for dircolors, a utility to help you set the
# LS_COLORS environment variable used by GNU ls with the --color option.
# Copyright (C) 1996-2018 Free Software Foundation, Inc.
# Copying and distribution of this file, with or without modification,
# are permitted provided the copyright notice and this notice are preserved.
# The keywords COLOR, OPTIONS, and EIGHTBIT (honored by the
# slackware version of dircolors) are recognized but ignored.
# Below are TERM entries, which can be a glob patterns, to match
# against the TERM environment variable to determine if it is colorizable.
TERM Eterm
TERM ansi
TERM *color*
TERM con[0-9]*x[0-9]*
TERM cons25
TERM console
TERM cygwin
TERM dtterm
TERM gnome
TERM hurd
TERM jfbterm
TERM konsole
TERM kterm
TERM linux
TERM linux-c
TERM mlterm
TERM putty
TERM rxvt*
TERM screen*
TERM st
TERM terminator
TERM tmux*
TERM vt100
TERM xterm*
# 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 # no color code at all
#FILE 00 # regular file: use no color at all
RESET 0 # reset to "normal" color
DIR 01;34 # directory
LINK 01;36 # symbolic link. (If you set this to 'target' instead of a
 # numerical value, the color is as for the file pointed to.)
MULTIHARDLINK 00 # regular file with more than one link
FIFO 40;33 # pipe
SOCK 01;35 # socket
DOOR 01;35 # door
BLK 40;33;01 # block device driver
CHR 40;33;01 # character device driver
ORPHAN 40;31;01 # symlink to nonexistent file, or non-stat'able file ...
MISSING 00 # ... and the files they point to
SETUID 37;41 # file that is setuid (u+s)
SETGID 30;43 # file that is setgid (g+s)
CAPABILITY 30;41 # file with capability
STICKY_OTHER_WRITABLE 30;42 # dir that is sticky and other-writable (+t,o+w)
OTHER_WRITABLE 34;42 # dir that is other-writable (o+w) and not sticky
STICKY 37;44 # dir with the sticky bit set (+t) and not other-writable
# 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 '#')
# If you use DOS-style suffixes, you may want to uncomment the following:
#.cmd 01;32 # executables (bright green)
#.exe 01;32
#.com 01;32
#.btm 01;32
#.bat 01;32
# Or if you want to colorize scripts even if they do not have the
# executable bit actually set.
#.sh 01;32
#.csh 01;32
 # archives or compressed (bright red)
.tar 01;31
.tgz 01;31
.arc 01;31
.arj 01;31
.taz 01;31
.lha 01;31
.lz4 01;31
.lzh 01;31
.lzma 01;31
.tlz 01;31
.txz 01;31
.tzo 01;31
.t7z 01;31
.zip 01;31
.z 01;31
.dz 01;31
.gz 01;31
.lrz 01;31
.lz 01;31
.lzo 01;31
.xz 01;31
.zst 01;31
.tzst 01;31
.bz2 01;31
.bz 01;31
.tbz 01;31
.tbz2 01;31
.tz 01;31
.deb 01;31
.rpm 01;31
.jar 01;31
.war 01;31
.ear 01;31
.sar 01;31
.rar 01;31
.alz 01;31
.ace 01;31
.zoo 01;31
.cpio 01;31
.7z 01;31
.rz 01;31
.cab 01;31
.wim 01;31
.swm 01;31
.dwm 01;31
.esd 01;31
# image formats
.jpg 01;35
.jpeg 01;35
.mjpg 01;35
.mjpeg 01;35
.gif 01;35
.bmp 01;35
.pbm 01;35
.pgm 01;35
.ppm 01;35
.tga 01;35
.xbm 01;35
.xpm 01;35
.tif 01;35
.tiff 01;35
.png 01;35
.svg 01;35
.svgz 01;35
.mng 01;35
.pcx 01;35
.mov 01;35
.mpg 01;35
.mpeg 01;35
.m2v 01;35
.mkv 01;35
.webm 01;35
.ogm 01;35
.mp4 01;35
.m4v 01;35
.mp4v 01;35
.vob 01;35
.qt 01;35
.nuv 01;35
.wmv 01;35
.asf 01;35
.rm 01;35
.rmvb 01;35
.flc 01;35
.avi 01;35
.fli 01;35
.flv 01;35
.gl 01;35
.dl 01;35
.xcf 01;35
.xwd 01;35
.yuv 01;35
.cgm 01;35
.emf 01;35
# https://wiki.xiph.org/MIME_Types_and_File_Extensions
.ogv 01;35
.ogx 01;35
# audio formats
.aac 00;36
.au 00;36
.flac 00;36
.m4a 00;36
.mid 00;36
.midi 00;36
.mka 00;36
.mp3 00;36
.mpc 00;36
.ogg 00;36
.ra 00;36
.wav 00;36
# https://wiki.xiph.org/MIME_Types_and_File_Extensions
.oga 00;36
.opus 00;36
.spx 00;36
.xspf 00;36

pi@raspberrypi:~/samp $ 

38行から44行位に色設定パラメータの説明が有り、まとめるとこんな感じ。

Attribute(属性) Text color(文字の色) Background(背景の色)
00:none(処理無し/普通) 30:black 40:black
01:bold(太い) 31:red 41:red
04:underscore(下線) 32:green 42:green
05:blink(点滅) 33:yellow 43:yellow
07:reverse(反転) 34:blue 44:blue
08:concealed(非表示) 35:magenta(赤紫) 45:magenta(赤紫)
36:cyan(水色) 46:cyan(水色)
37:white 47:white

それ以降は各FileまたはDirectoryに対して割り当てられている色について書かれています。これを参考に、端末に表示されている項目の色を確認すると、確かに指定通りの色になっている事が分かります。

  • Directory: ファイルタイプの最初の位置文字(各行の一番左の1文字)が ”d”
    • DIR 01;34 # directory  ー> 太字の青
  • 拡張子が.mp3のファイル
    • mp3 00;36 ー> 普通の水色
  • 拡張子が.gzのファイル
    • .gz 01;31 ー> 太い赤
  • ここで定義されていない拡張子のファイル
    • 例えば .txt  00 ー> 普通 

その他の色指定

その他で拡張子と色が、.tar 01;31 / .bmp 01;35 / .mp3 00;36 と有ります。これを確認して見ます。確認に使うファイルは ”123.txt” です。ファイルは中身は、ASCII文字ファイルです。

pi@raspberrypi:~/samp $ cat 123.txt
abcd
12345
123abc456efg
pi@raspberrypi:~/samp $ 

先ずは、単純にリスト表示。白色で普通に表示されます。

この ”123.txt” を CPコマンドを使って拡張子のみ “.tar” / ” .bmp” / “.mp3” としたファイルを作ります。つまりファイルの中身は単純なASCII文字ファイル。拡張子のみ変更しました。中身に関係無く拡張子で色が決まる様です。

その他、 .sh / .bat / .com は 01;32 と有ります。これも同様に拡張子の変更して確かめて見ます。

色が変わっていません。”123.txt” と同じ白色の普通の表示です。01:32は太文字の緑のです。そこでこれらのファイルに、chmod を使って実行権を持たせてみました。

指定通りの色になりました。この場合は、ファイルの拡張子では無く実行権が有る場合色が、太文字の緑になる様です。試しに、”123.bmp”に実行権を付けて見ます。

普通の紫が、太文字の緑に代わりました。実行権の方が優先される様です。

設定を変更する

環境変数 LS_COLORSは現在の色指定を持っていて、この値を変更すれば色を変える事が出来ます。現在のLS_COLORSを表示さると

拡張子と色指定の文字列の様です。このリストには “.txt” が無いので、”*.txt=41;04;36” バックが赤、下線有り、青色になるはずです。ちゃんとなっています。

立ち上げと同時に変更したい

lsコマンドの色を変更する”に説明が有しました。

  • ターミナルの色に関するファイルを取得 dircolors -p > ~/.colorrc
  • .colorrcの中の, ディレクトリの色を指定しているところを変更
  • 変更した~/.colorrcをlsの時に反映されるように~/.bashrcに追記

で出来る様です。