lsの色表示で256色を使ってみた

端末の256色表示を調べて試してみると、普通に表示できた。
emacsのバックアップファイルに灰色だったり、よく操作するファイルの色を変えてみたかったので変えてみた。

256色表示ができるか確認

https://github.com/dzfl/dotfiles/blob/master/.zshrc

ここからpcolor関数をもらってきてシェルの設定ファイルをコピペし、シェル上でpcolorを打ち込むと
今の環境で256色表示できるかの確認ができる。
自分の場合だと、何の変更も加えずに、256色表示が出来たため、確認方法だけの紹介になる。
表示ができない場合だと256色表示できないツールなりを使っていないか調べ、場合によっては仮想ターミナルなどを
インストールしなおしになるかもしれない。

echo で256色表示してみる

とりあえず256色表示できるようになった(はず)なので、echoを使って欲しい色を表示してみる。


echo "\e[38:05:203mTEST\e[m"
203の部分をpcolorで表示した色の番号に変更していくと欲しい色が表示されるはずである。
38:05の前に以下のの数字をつけると強調表示を追加できる
01:ボールド
04:下線
07:反転
08:非表示
09:打ち消し
複数の強調表示を使う場合は、強調表示の数字が先頭に集まるようにする。
下線、打ち消しを例にすると、以下のようになる

echo "\e[04;09;38;05:203mTEST\e[m"

lsのカラー表示

lsのカラー表示をいじる前に、普段からlsをカラー表示してない人もいると思うので、そこから。
ls --color を実行するとデフォルトの色表示設定で表示されるはず。
自分の環境だと、ディレクトリは青、実行ファイルは緑(黄緑?)、圧縮ファイルやアーカイブなどは赤…
などといった色分けになっている。

ユーザごとのカラー設定ファイル作成

lsのカラー表示は、環境変数のLS_COLORSを参照する。
ユーザごとのlsの色表示設定ファイルは~/.dir_colors
デフォルトではなかったので、


dircolors -p > ~/.dir_colors
を実行して、現在の設定をファイルに保存する

作成したカラー設定ファイルの編集

.dir_colors では # 以降がコメントとして扱われる
カラー表示部分を変更すればいいので、.dir_colorsの前半部分 TREMから始まる行は編集しない。
後半の


.(拡張子) ??;??
の様になっている部分を変更する。
新しく設定を追加する場合は、行頭に設定を反映したいファイルのパターンと表示する色を空白区切りで入力する
表示する色の部分は、上でだした echo の例だと、\e[ から m まで間の部分を入力することになる。

変更の反映

シェルを起動し直せば、~/.dir_colorsが自動で読み込まれて設定が反映される…らしいが、
自分のところでは自動でできなかったので、シェルの設定ファイルに以下を追記した。


eval `dircolors -b ~/.dir_colors`

これでシェルを起動しなおすと、色の設定が反映される

参考…になるのかわからないけど、とりあえず、自分が変更した~/.dir_colorsを貼りつけておく。


# 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, 1999-2008
# 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, there should be one TERM entry for each termtype that is colorizable
TERM Eterm
TERM ansi
TERM color-xterm
TERM con132x25
TERM con132x30
TERM con132x43
TERM con132x60
TERM con80x25
TERM con80x28
TERM con80x30
TERM con80x43
TERM con80x50
TERM con80x60
TERM cons25
TERM console
TERM cygwin
TERM dtterm
TERM eterm-color
TERM gnome
TERM gnome-256color
TERM jfbterm
TERM konsole
TERM kterm
TERM linux
TERM linux-c
TERM mach-color
TERM mlterm
TERM putty
TERM rxvt
TERM rxvt-cygwin
TERM rxvt-cygwin-native
TERM rxvt-unicode
TERM screen
TERM screen-256color
TERM screen-bce
TERM screen-w
TERM screen.linux
TERM vt100
TERM xterm
TERM xterm-16color
TERM xterm-256color
TERM xterm-88color
TERM xterm-color
TERM xterm-debian
# 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.)
HARDLINK 44;37 # 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
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
.arj 01;31
.taz 01;31
.lzh 01;31
.lzma 01;31
.zip 01;31
.z 01;31
.Z 01;31
.dz 01;31
.gz 01;31
.bz2 01;31
.bz 01;31
.tbz2 01;31
.tz 01;31
.deb 01;31
.rpm 01;31
.jar 01;31
.rar 01;31
.ace 01;31
.zoo 01;31
.cpio 01;31
.7z 01;31
.rz 01;31
# image formats
.jpg 01;35
.jpeg 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
.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
# http://wiki.xiph.org/index.php/MIME_Types_and_File_Extensions
.axv 01;35
.anx 01;35
.ogv 01;35
.ogx 01;35
# audio formats
.aac 00;36
.au 00;36
.flac 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
# http://wiki.xiph.org/index.php/MIME_Types_and_File_Extensions
.axa 00;36
.oga 00;36
.spx 00;36
.xspf 00;36
# 256colors
# after this line, added by user
*~ 38;05;240
.rb 01;38;05;202