linux命令行输出增加颜色
linux命令行输出增加颜色详细介绍
在 Linux 命令行中增加颜色显示,主要通过 ANSI 转义序列 实现。以下是详细的方法和示例:
一、基本原理:ANSI 转义序列
ANSI 转义序列以 \033(或 ESC 键,ASCII 码 27)开头,格式为:
plaintext
\033[<参数>m 内容 \033[0m (重置颜色)
常用参数:
| 功能 | 前景色(30-37) | 背景色(40-47) | 附加属性(如加粗、下划线) |
|---|---|---|---|
| 黑色 | 30 | 40 | 加粗:1,下划线:4 |
| 红色 | 31 | 41 | 斜体:3,反显(前景背景交换):7 |
| 绿色 | 32 | 42 | 重置所有属性:0 |
| 黄色 | 33 | 43 | |
| 蓝色 | 34 | 44 | |
| 洋红色(紫) | 35 | 45 | |
| 青色 | 36 | 46 | |
| 白色 | 37 | 47 |
二、具体用法
1. 在
echo 中直接使用(需加
-e 选项启用转义)
bash
[1;31m红色加粗文字\033[0m"
[42;37m绿色背景白色文字\033[0m"
[4;33m黄色下划线文字\033[0m"
2. 使用
tput 命令(更便携,自动适配终端)
tput 可查询终端能力并生成转义序列,避免直接写数字:
bash
tput setaf
tput sgr0
tput setab
tput sgr0
3. 在 Shell 脚本中定义颜色变量(方便复用)
bash
错误信息:操作失败!"
成功:任务完成"
4. 256 色模式(更丰富的颜色,需终端支持)
使用 38;5;<n>(前景)或 48;5;<n>(背景),n 为 0-255 的颜色编号:
bash
[38;5;208m橙色文字\033[0m"
[48;5;51m深蓝色背景文字\033[0m"
查询 256 色编号:echo -e "\033[38;5;{0..255}m{0..255}"(需分行显示)。
三、常用命令的内置颜色支持
许多命令默认支持颜色,可通过选项启用或配置:
grep:加--color或--color=autobash文件.txtls:加--color(或设置环境变量LS_COLORS自定义)bashalwayscat/less/man:部分场景通过环境变量控制(如LESS_TERMCAP_mb定义加粗颜色)。
四、注意事项
- 重置颜色:每次颜色设置后务必用
\033[0m或tput sgr0重置,避免后续输出受影响。 - 终端兼容性:现代终端(如 GNOME Terminal、iTerm2)普遍支持,但老旧终端可能不支持,需提前检查。
- 脚本适配:若脚本需兼容非交互式终端,可通过
tput colors判断终端是否支持颜色(返回值 ≥8 表示支持)。
五、示例汇总
| 效果 | 命令示例 |
|---|---|
| 红色普通字 | echo -e "\033[31m红色\033[0m" |
| 绿色加粗字 | echo -e "\033[1;32m绿色加粗\033[0m" |
| 黄色背景白字 | echo -e "\033[43;37m黄底白字\033[0m" |
| 256 色橙色 | echo -e "\033[38;5;208m橙色\033[0m" |
tput 方式 |
tput setaf 1; echo "红色"; tput sgr0 |
通过上述方法,可灵活为命令行输出添加颜色,提升日志、脚本信息的可读性。