dircolors命令用于设置ls命令的显示颜色。它输出设置LS_COLORS环境变量的命令,用于控制不同文件类型在ls命令输出中的颜色。
dircolors [选项] [文件]
LS_COLORS环境变量的设置命令ls --color=auto命令的输出颜色dircolors本身不设置颜色,而是输出需要执行的命令eval命令配合使用:eval "$(dircolors)"~/.dircolors或/etc/DIR_COLORS文件中ls命令支持--color选项| 代码 | 颜色 | 说明 |
|---|---|---|
| 30 | 黑色 | 前景色黑色 |
| 31 | 红色 | 前景色红色 |
| 32 | 绿色 | 前景色绿色 |
| 33 | 黄色 | 前景色黄色 |
| 34 | 蓝色 | 前景色蓝色 |
| 35 | 洋红色 | 前景色洋红色 |
| 36 | 青色 | 前景色青色 |
| 37 | 白色 | 前景色白色 |
| 40 | 黑色 | 背景色黑色 |
| 41 | 红色 | 背景色红色 |
| 42 | 绿色 | 背景色绿色 |
| 43 | 黄色 | 背景色黄色 |
| 44 | 蓝色 | 背景色蓝色 |
| 45 | 洋红色 | 背景色洋红色 |
| 46 | 青色 | 背景色青色 |
| 47 | 白色 | 背景色白色 |
| 代码 | 说明 |
|---|---|
| 0 | 重置所有属性 |
| 1 | 加粗/高亮 |
| 4 | 下划线 |
| 5 | 闪烁 |
| 7 | 反显(前景背景互换) |
| 8 | 隐藏 |
| 参数 | 说明 |
|---|---|
文件 |
指定颜色配置文件。默认为~/.dircolors,如果不存在则使用/etc/DIR_COLORS |
-b, --sh, --bourne-shell |
输出Bourne shell命令(默认) |
-c, --csh, --c-shell |
输出C shell命令 |
-p, --print-database |
输出默认颜色配置数据库 |
--help |
显示帮助信息 |
--version |
显示版本信息 |
查看系统默认的LS_COLORS设置:
# 查看默认颜色配置数据库
$ 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.
#
# ...
# NORMAL 00 # global default, although everything should be something.
# FILE 00 # normal file
# DIR 01;34 # directory
# LINK 01;36 # symbolic link
# ...
# 更简洁的方式
$ dircolors -p
使用dircolors设置颜色:
# 生成设置LS_COLORS的命令并执行
$ eval "$(dircolors)"
# 查看设置的LS_COLORS值
$ echo $LS_COLORS | tr ':' '\n' | head -20
rs=0
di=01;34
ln=01;36
mh=00
pi=40;33
so=01;35
do=01;35
bd=40;33;01
cd=40;33;01
or=40;31;01
mi=00
su=37;41
sg=30;43
ca=30;41
tw=30;42
ow=34;42
st=37;44
ex=01;32
创建~/.dircolors文件自定义颜色:
# 生成默认配置作为模板
$ dircolors -p > ~/.dircolors
# 编辑配置文件
$ nano ~/.dircolors
# 修改示例:将目录颜色改为绿色下划线
# 将 DIR 01;34 改为 DIR 04;32
# 01 表示加粗,34 表示蓝色
# 04 表示下划线,32 表示绿色
~/.dircolors 文件示例:
# 基本文件类型颜色 NORMAL 00 # 普通文本 FILE 00 # 普通文件 DIR 01;34 # 目录(蓝色加粗) LINK 01;36 # 符号链接(青色加粗) # 特殊文件类型 FIFO 40;33 # 管道文件(黄色背景) SOCK 01;35 # 套接字文件(洋红色加粗) # 文件扩展名颜色 .tar 01;31 # tar文件(红色加粗) .tgz 01;31 # tgz文件(红色加粗) .gz 01;31 # gz文件(红色加粗) .zip 01;31 # zip文件(红色加粗) .png 01;35 # png图片(洋红色加粗) .jpg 01;35 # jpg图片(洋红色加粗)
应用自定义的.dircolors文件:
# 应用自定义配置
$ eval "$(dircolors ~/.dircolors)"
# 或者使用默认位置(~/.dircolors)
$ eval "$(dircolors)"
# 测试效果
$ ls --color=auto
# 将设置添加到bashrc中永久生效
$ echo 'eval "$(dircolors)"' >> ~/.bashrc
在C shell中使用dircolors:
# 生成C shell语法
$ dircolors -c
setenv LS_COLORS 'rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.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:*.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:*.ogv=01;35:*.ogx=01;35:*.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:*.oga=00;36:*.opus=00;36:*.spx=00;36:*.xspf=00;36:';
# 在C shell中应用
$ eval `dircolors -c`
查看当前的LS_COLORS设置:
# 查看当前的LS_COLORS环境变量
$ echo $LS_COLORS
# 格式化为更易读的形式
$ echo $LS_COLORS | sed 's/:/\n/g' | sort
# 查看特定文件类型的颜色设置
$ echo $LS_COLORS | sed 's/:/\n/g' | grep "\.tar"
*.tar=01;31
# 解释颜色代码:01;31
# 01 = 加粗/高亮
# 31 = 红色前景
临时修改LS_COLORS环境变量:
# 临时修改目录颜色为绿色下划线
$ export LS_COLORS="di=04;32:$LS_COLORS"
# 或者完全自定义
$ export LS_COLORS="di=01;34:ln=01;36:so=01;35:pi=40;33:ex=01;32:*.tar=01;31"
# 测试效果
$ ls --color=auto
# 恢复默认
$ eval "$(dircolors)"
在Shell脚本中设置LS_COLORS:
#!/bin/bash
# 设置LS_COLORS环境变量
if [ -f ~/.dircolors ]; then
eval "$(dircolors ~/.dircolors)"
else
eval "$(dircolors)"
fi
# 或者直接设置
# export LS_COLORS="di=01;34:ln=01;36:so=01;35:ex=01;32"
# 使用带颜色的ls
ls --color=auto
# 检查颜色是否生效
if [ -n "$LS_COLORS" ]; then
echo "LS_COLORS已设置: $LS_COLORS"
else
echo "LS_COLORS未设置"
fi
一些实用的颜色配置:
# 高对比度配置(适合深色背景)
cat > ~/.dircolors-high-contrast << 'EOF'
# 高对比度配置
DIR 01;37;44 # 目录:白色加粗,蓝色背景
LINK 01;36 # 链接:青色加粗
SOCK 01;35 # 套接字:洋红色加粗
EXEC 01;32 # 可执行文件:绿色加粗
.tar 01;31 # 压缩文件:红色加粗
.zip 01;31
.gz 01;31
.jpg 01;33 # 图片:黄色加粗
.png 01;33
EOF
# 应用配置
eval "$(dircolors ~/.dircolors-high-contrast)"
ls --color=auto或ls --color=always~/.dircolors优先级高于/etc/DIR_COLORS~/.dircolors文件以便恢复alias reload-colors='eval "$(dircolors)"'
alias show-colors='echo $LS_COLORS | sed "s/:/\n/g" | sort'
.dircolors配置文件ls /usr/bin | head -20测试颜色效果A: 1) 检查是否执行了eval "$(dircolors)";2) 检查ls是否使用了--color选项;3) 检查终端是否支持颜色。
A: 删除~/.dircolors文件,然后执行eval "$(dircolors)"或重新登录。
A: 格式为类型=颜色代码:类型=颜色代码...,用冒号分隔。如di=01;34:ln=01;36。
A: 在.dircolors文件中添加*.扩展名 颜色代码,如*.jpg 01;35。
A: dircolors命令用于生成LS_COLORS环境变量的值。LS_COLORS是实际控制ls颜色的环境变量。
ls - 列出目录内容(使用--color选项显示颜色)eval - 执行字符串作为命令(用于应用dircolors输出)export - 设置环境变量(设置LS_COLORS)tput - 终端能力查询(设置终端颜色)echo -e - 输出ANSI转义序列(测试颜色代码)