CentOS8 tree命令怎么高亮显示不同文件类型?

刚装好的CentOS8最小系统,敲完tree只看到一片灰白,眼睛瞬间罢工。想让它像Ubuntu那样给目录、可执行文件、压缩包分别上色,其实就缺两行配置。下面把踩坑笔记一次性摊开,照着做,三分钟就能收获一面彩色墙。

一、先确认系统里到底是哪个tree
CentOS8默认仓库提供两个版本:基础tree和tree-plus。前者不带颜色,后者支持LS_COLORS。输入tree --version,如果返回tree v1.8.0且没有color字样,说明是“阉割版”。直接dnf remove tree卸干净,再dnf install tree-plus,这一步能省掉后续90%的折腾。
二、让终端先学会“看颜色”
tree的颜色依赖终端的256色模式。执行echo $TERM,如果返回xterm而不是xterm-256color,颜色就被悄悄吞掉。临时开色,运行export TERM=xterm-256color;想永久生效,写进~/.bashrc,随后source一下即可。
三、LS_COLORS是调色盘
tree不会自己乱配色,它读的是系统变量LS_COLORS。先装一把dircolors:dnf install coreutils。然后执行dircolors --print-database,能看到一堆*.tar=01;31之类的代码。01表示加粗,31是红色,意思就是“压缩包用粗红”。把输出重定向到~/.dircolors:dircolors --print-database > ~/.dircolors,再在~/.bashrc里加一行:eval "$(dircolors ~/.dircolors)",重新登录,调色盘就常驻内存。
四、tree命令的正确打开方式
做完上面三步,直接敲tree依旧可能灰头土脸,因为默认没开颜色开关。记住两组常用参数:
tree -C //强制开颜色,适合单次查看
tree --color=always //管道给less、grep时也能保留颜色
想一劳永逸,给tree起别名:echo "alias tree='tree -C'" >> ~/.bashrc,下次输入tree就自带高亮。
五、自定义颜色:把.sh染成亮黄
系统默认把可执行文件设成粗绿,可shell脚本一多,绿成一片,根本分不清。编辑~/.dircolors,找到EXEC那一行,下面插入:
*.sh=01;93

93是亮黄,01保持加粗。保存后source ~/.bashrc,再tree,所有.sh文件瞬间跳脱出来。照猫画虎,把.log设成灰色47,.conf设成青色36,全凭喜好。
六、超大目录提速:彩色也不卡
给几万个文件的目录跑tree,彩色模式偶尔拖慢。加-L 2限制深度,再配-f显示完整路径,既能看颜色又避免刷屏。若只想统计,用tree -C -d只看目录,速度回炉。
七、脚本里也能用彩色tree
写巡检脚本时,把彩色结果写进邮件,需要--color=always配合aha工具转html:
tree -C --color=always -L 2 /var/www | aha > report.html
这样收到的邮件正文就是带色目录树,老板一眼能看到重点。
八、常见翻车点速查
1. 用了tmux或screen,颜色消失:在配置文件里加set -g default-terminal "tmux-256color"。
2. 远程ssh登录无色:检查服务端/etc/ssh/sshd_config中AcceptEnv TERM是否被注释。
3. Mac终端连接CentOS8无色:Mac默认TERM=xterm-256color,但部分老版本需手动同步。
把上面几点挨个敲完,再跑tree,目录、普通文件、可执行、压缩包、图片各归其色,一眼定位,排查效率直接翻倍。彩色不只是好看,更是让文件类型自己开口说话。
