Linux 终端文件列表着色方案 🌈

本指南详细介绍如何为 Linux 的 ls 命令配置彩色输出,让文件列表更加直观和易于识别。通过精心设计的颜色方案,您可以大幅提升终端使用效率和体验!🎨


📖 导航目录


🎯 一、快速配置方法

1. 创建着色配置

1
2
3
4
5
6
7
8
9
# 将着色配置添加到 .bashrc 文件
cat >> ~/.bashrc << 'EOF'
# LS 颜色配置
alias ls='ls --color=auto'
export LS_COLORS='di=1;34:ln=1;36:so=1;35:pi=1;33:ex=1;32:bd=1;34:cd=1;34:su=1;41:sg=1;46:tw=1;42:ow=1;33:*.gz=1;32:*.mp4=1;32'
EOF

# 立即生效
source ~/.bashrc

2. 验证配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 测试配置是否生效
ls -la
# 🎨 应该显示彩色输出

# 检查 LS_COLORS 变量
echo $LS_COLORS

# 创建测试文件和环境
mkdir -p /tmp/color-test && cd /tmp/color-test
touch {file.txt,script.sh,image.jpg,archive.tar.gz,music.mp3}
chmod +x script.sh
ln -s file.txt link.txt
mkfifo pipe.fifo
ls -la

终端着色效果


📊 二、颜色代码详解

文件类型颜色代码

代码 颜色 效果 示例
1;34 蓝色 粗体蓝色 目录
1;36 青色 粗体青色 符号链接
1;35 紫色 粗体紫色 Socket 文件
1;33 黄色 粗体黄色 命名管道
1;32 绿色 粗体绿色 可执行文件
1;41 红底 粗体白色,红色背景 setuid 文件
1;46 青底 粗体黑色,青色背景 setgid 文件
1;42 绿底 粗体黑色,绿色背景 粘滞位目录

文件类型标识符

代码 文件类型 说明 示例
di 目录 Directory /home/user/
ln 符号链接 Symbolic Link link -> target
so Socket 文件 Socket /run/service.sock
pi 命名管道 FIFO/Named Pipe pipe.fifo
ex 可执行文件 Executable script.sh
bd 块设备 Block Device /dev/sda
cd 字符设备 Character Device /dev/tty
su setuid 文件 Set UID /usr/bin/passwd
sg setgid 文件 Set GID /usr/bin/wall
tw 粘滞位目录 Sticky Bit Directory /tmp/
ow 其他可写目录 Other Writable Directory /var/www/
*.ext 扩展名匹配 按文件扩展名 *.txt, *.jpg

颜色代码格式

1
2
3
4
5
6
7
# 基本格式
TYPE=STYLE;FOREGROUND;BACKGROUND

# 示例
di=1;34 # 目录:粗体蓝色文本
*.txt=1;32 # txt文件:粗体绿色文本
*.jpg=1;35 # jpg文件:粗体紫色文本

样式代码

代码 样式
0 正常样式
1 粗体
4 下划线
5 闪烁
7 反显
8 隐藏

颜色代码表

代码 前景色 背景色
30 黑色 40
31 红色 41
32 绿色 42
33 黄色 43
34 蓝色 44
35 紫色 45
36 青色 46
37 白色 47
39 默认前景色 49

🎨 三、自定义颜色方案

1. 基础颜色方案

1
2
# 简洁明了的颜色方案
export LS_COLORS='di=1;34:ln=1;36:so=1;35:pi=1;33:ex=1;32:*.tar=31:*.tgz=31:*.zip=31:*.gz=31:*.bz2=31:*.deb=31:*.rpm=31:*.jpg=35:*.png=35:*.gif=35:*.mp4=35:*.mp3=35:'

2. 高级颜色方案

1
2
# 更详细的文件类型区分
export 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:*.7z=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:'

3. 暗色主题方案

1
2
# 适合暗色终端的方案
export LS_COLORS='di=1;36:ln=1;35:so=1;32:pi=1;33:ex=1;31:bd=34;46:cd=34;43:su=30;41:sg=30;46:tw=30;42:ow=34;42:*.c=1;33:*.h=1;33:*.py=1;33:*.js=1;33:*.html=1;33:*.css=1;33:*.json=1;33:'

4. 高对比度方案

1
2
# 适合视力不佳用户的高对比度方案
export LS_COLORS='di=1;37;44:ln=1;37;46:so=1;37;45:pi=1;37;43:ex=1;37;42:bd=1;37;44:cd=1;37;44:su=1;37;41:sg=1;30;47:tw=1;30;42:ow=1;37;44:*.txt=1;37:*.sh=1;32:*.py=1;33:*.js=1;33:*.html=1;33:*.css=1;33:*.jpg=1;35:*.png=1;35:*.gif=1;35:*.mp4=1;35:*.mp3=1;36:'

⚙️ 四、系统级配置

1. 全局配置(所有用户)

1
2
3
4
5
6
7
8
9
10
11
# 编辑全局配置文件
sudo nano /etc/bash.bashrc

# 添加以下内容
if [ -x /usr/bin/dircolors ]; then
test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
alias ls='ls --color=auto'
alias grep='grep --color=auto'
alias fgrep='fgrep --color=auto'
alias egrep='egrep --color=auto'
fi

2. 使用 dircolors 配置文件

1
2
3
4
5
6
7
8
9
10
11
# 生成默认配置
dircolors -p > ~/.dircolors

# 编辑自定义配置
nano ~/.dircolors

# 应用配置
eval "$(dircolors -b ~/.dircolors)"

# 查看默认配置内容
cat ~/.dircolors | head -20

3. 为不同用户设置不同方案

1
2
3
4
5
6
7
8
9
10
11
# 在用户家目录创建个性化配置
cat > ~/.ls_colors << 'EOF'
# 个性化 LS_COLORS 配置
di=1;34:ln=1;36:so=1;35:pi=1;33:ex=1;32
*.txt=1;37:*.sh=1;32:*.py=1;33:*.js=1;33
*.jpg=1;35:*.png=1;35:*.gif=1;35
*.mp4=1;35:*.mp3=1;36:*.flac=1;36
EOF

# 在 .bashrc 中引用
echo 'export LS_COLORS=$(cat ~/.ls_colors | tr -d "\n")' >> ~/.bashrc

🔧 五、其他相关配置

1. 为其他命令启用颜色

1
2
3
4
5
6
7
8
9
10
11
12
13
# 在 ~/.bashrc 中添加
alias grep='grep --color=auto'
alias fgrep='fgrep --color=auto'
alias egrep='egrep --color=auto'
alias ip='ip -color=auto'

# 对于 diff 命令
alias diff='diff --color=auto'

# 对于 ls 的更多别名
alias ll='ls -alF'
alias la='ls -A'
alias l='ls -CF'

2. 树状显示带颜色

1
2
3
4
5
6
7
8
9
10
11
# 安装 tree 命令
sudo apt install tree

# 使用彩色 tree
alias tree='tree -C'

# 永久生效
echo "alias tree='tree -C'" >> ~/.bashrc

# 使用示例
tree -L 2 /home

3. 彩色 man 页面

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 启用彩色 man 页面
export LESS_TERMCAP_mb=$'\E[1;31m' # 开始闪烁
export LESS_TERMCAP_md=$'\E[1;36m' # 开始粗体
export LESS_TERMCAP_me=$'\E[0m' # 结束模式
export LESS_TERMCAP_so=$'\E[01;44;33m' # 开始突出显示
export LESS_TERMCAP_se=$'\E[0m' # 结束突出显示
export LESS_TERMCAP_us=$'\E[1;32m' # 开始下划线
export LESS_TERMCAP_ue=$'\E[0m' # 结束下划线

# 添加到 ~/.bashrc
cat >> ~/.bashrc << 'EOF'
# 彩色 man 页面
export LESS_TERMCAP_mb=$'\E[1;31m'
export LESS_TERMCAP_md=$'\E[1;36m'
export LESS_TERMCAP_me=$'\E[0m'
export LESS_TERMCAP_so=$'\E[01;44;33m'
export LESS_TERMCAP_se=$'\E[0m'
export LESS_TERMCAP_us=$'\E[1;32m'
export LESS_TERMCAP_ue=$'\E[0m'
EOF

4. 彩色提示符

1
2
3
4
5
# 在 ~/.bashrc 中添加彩色提示符
PS1='\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '

# 更复杂的提示符
PS1='\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]$(git branch 2>/dev/null | grep -e ^* | sed -E "s/^\* (.+)$/ \[\033[01;33m\](\1)\[\033[00m\]/")\$ '

🐛 六、故障排除

1. 颜色不显示

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 检查终端是否支持颜色
echo $TERM
# 应该显示: xterm-256color 或类似

# 强制启用颜色
export TERM=xterm-256color

# 检查是否设置了 NO_COLOR 环境变量
echo $NO_COLOR
# 如果设置了,取消设置
unset NO_COLOR

# 检查 ls 命令是否支持颜色
ls --color=always | head -5

2. 颜色配置无效

1
2
3
4
5
6
7
8
9
10
11
# 重新加载配置
source ~/.bashrc

# 检查别名
alias ls

# 检查变量
echo $LS_COLORS

# 检查是否有其他配置覆盖
grep -n "LS_COLORS\|alias ls" ~/.bashrc ~/.profile ~/.bash_profile

3. 恢复默认设置

1
2
3
4
5
6
7
8
9
10
# 删除自定义配置
sed -i '/LS_COLORS/d' ~/.bashrc
sed -i '/alias ls/d' ~/.bashrc

# 重新加载
source ~/.bashrc

# 或者使用默认值
export LS_COLORS=""
alias ls='ls --color=auto'

4. 终端兼容性问题

1
2
3
4
5
6
7
8
# 对于某些终端,可能需要不同的设置
if [ "$TERM" = "dumb" ]; then
alias ls='ls --color=never'
alias grep='grep --color=never'
else
alias ls='ls --color=auto'
alias grep='grep --color=auto'
fi

💡 七、实用技巧

1. 临时测试颜色方案

1
2
3
4
5
# 临时设置而不修改配置文件
LS_COLORS='di=1;34:ln=1;36:ex=1;32' ls -la

# 测试特定文件类型
LS_COLORS='*.sh=1;32:*.py=1;33:*.js=1;33' ls -la

2. 查看所有颜色代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 显示所有可用的颜色代码
for i in {0..255}; do
printf "\e[48;5;%sm%3d\e[0m " $i $i
if (( (i + 1) % 16 == 0 )); then
printf "\n"
fi
done

# 或者使用更简单的版本
echo -e "\e[0mNC (No color)"
echo -e "\e[1;37mBold White\e[0m"
echo -e "\e[1;31mBold Red\e[0m"
echo -e "\e[1;32mBold Green\e[0m"
echo -e "\e[1;33mBold Yellow\e[0m"
echo -e "\e[1;34mBold Blue\e[0m"
echo -e "\e[1;35mBold Purple\e[0m"
echo -e "\e[1;36mBold Cyan\e[0m"

3. 创建颜色测试脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 创建测试文件
mkdir -p /tmp/color-test
cd /tmp/color-test
touch {file.txt,script.sh,image.jpg,archive.tar.gz,music.mp3}
chmod +x script.sh
ln -s file.txt link.txt
mkfifo pipe.fifo

# 测试颜色显示
ls -la

# 清理测试文件
cd ..
rm -rf /tmp/color-test

4. 导出和导入配置

1
2
3
4
5
6
7
8
# 导出当前 LS_COLORS 配置
echo $LS_COLORS > ls_colors_backup.txt

# 从文件导入配置
export LS_COLORS=$(cat ls_colors_backup.txt)

# 分享配置给其他用户
echo "export LS_COLORS='$LS_COLORS'" >> ~/shared_ls_colors.sh

🌟 八、颜色方案推荐

1. 程序员专用方案

1
export LS_COLORS='di=1;34:ln=1;36:so=1;35:pi=1;33:ex=1;32:bd=1;34:cd=1;34:su=1;41:sg=1;46:tw=1;42:ow=1;33:*.c=1;33:*.h=1;33:*.cpp=1;33:*.hpp=1;33:*.py=1;33:*.js=1;33:*.html=1;33:*.css=1;33:*.json=1;33:*.xml=1;33:*.yml=1;33:*.yaml=1;33:*.md=1;33:*.txt=1;37:*.conf=1;33:'

2. 多媒体方案

1
export LS_COLORS='di=1;34:ln=1;36:so=1;35:pi=1;33:ex=1;32:*.jpg=1;35:*.jpeg=1;35:*.png=1;35:*.gif=1;35:*.bmp=1;35:*.mp4=1;35:*.avi=1;35:*.mkv=1;35:*.mov=1;35:*.mp3=1;36:*.flac=1;36:*.wav=1;36:*.ogg=1;36:*.aac=1;36:'

3. 文档方案

1
export LS_COLORS='di=1;34:ln=1;36:so=1;35:pi=1;33:ex=1;32:*.pdf=1;31:*.doc=1;31:*.docx=1;31:*.xls=1;31:*.xlsx=1;31:*.ppt=1;31:*.pptx=1;31:*.odt=1;31:*.ods=1;31:*.odp=1;31:*.txt=1;37:*.rtf=1;37:*.tex=1;33:'

4. 服务器管理方案

1
export LS_COLORS='di=1;34:ln=1;36:so=1;35:pi=1;33:ex=1;32:*.conf=1;33:*.cfg=1;33:*.ini=1;33:*.yml=1;33:*.yaml=1;33:*.json=1;33:*.xml=1;33:*.log=1;37:*.sql=1;33:*.db=1;33:*.sh=1;32:*.py=1;33:*.pl=1;33:'

5. 简约方案

1
export LS_COLORS='di=34:ln=36:so=35:pi=33:ex=32:*.txt=37:*.sh=32:*.py=33:*.js=33:*.html=33:*.css=33:*.jpg=35:*.png=35:*.gif=35:*.mp4=35:*.mp3=36:'

🎯 提示: 选择适合您工作类型的颜色方案,可以让文件管理更加高效。建议定期调整和优化您的颜色配置。

通过本指南,您应该能够创建出既美观又实用的终端颜色方案。记得根据实际使用情况调整颜色代码,找到最适合自己的配置。