shell color
在 Bash shell 中,颜色通常通过 ANSI 转义序列(Escape Sequences)实现,用于改变终端文本的前景色、背景色或样式(如加粗、斜体等)。以下是 Bash shell 中颜色的详细讲解:
1. ANSI 转义序列基础
ANSI 转义序列以 \033[ 或 \e[ 开头,后面跟着一系列数字和字母,用于设置颜色和样式,最后以 m 结束。例如:
1 | echo -e "\033[31mHello, World!\033[0m" |
\033[31m:将文本设置为红色。\033[0m:重置颜色和样式,恢复默认。
格式:
1 | \033[<样式>;<前景色>;<背景色>m |
<样式>:控制文本样式(如加粗、下划线)。<前景色>:设置文本颜色。<背景色>:设置背景颜色(可选)。
2. 颜色代码
前景色(文本颜色)
| 颜色 | 代码 | 说明 |
|---|---|---|
| 黑色 | 30 | Black |
| 红色 | 31 | Red |
| 绿色 | 32 | Green |
| 黄色 | 33 | Yellow |
| 蓝色 | 34 | Blue |
| 紫色 | 35 | Magenta |
| 青色 | 36 | Cyan |
| 白色 | 37 | White |
背景色
| 颜色 | 代码 | 说明 |
|---|---|---|
| 黑色 | 40 | Black |
| 红色 | 41 | Red |
| 绿色 | 42 | Green |
| 黄色 | 43 | Yellow |
| 蓝色 | 44 | Blue |
| 紫色 | 45 | Magenta |
| 青色 | 46 | Cyan |
| 白色 | 47 | White |
高亮/加深颜色(Bright Colors)
高亮颜色通过在前景色或背景色代码前加 1; 实现。例如:
- 高亮红色前景色:
\033[1;31m - 高亮红色背景色:
\033[1;41m
样式
| 样式 | 代码 | 说明 |
|---|---|---|
| 重置 | 0 | Reset all |
| 加粗 | 1 | Bold |
| 暗淡 | 2 | Dim |
| 下划线 | 4 | Underline |
| 闪烁 | 5 | Blink |
| 反显 | 7 | Reverse |
| 隐藏 | 8 | Hidden |
3. 使用示例
以下是一些在 Bash 中使用颜色的示例:
基本颜色
1 | echo -e "\033[31mThis is red text\033[0m" |
- 输出红色文本、绿色文本和红底白字文本。
组合样式和颜色
1 | echo -e "\033[1;34mThis is bold blue text\033[0m" |
- 组合加粗、下划线、前景色和背景色。
循环显示所有前景色
1 | for i in {30..37}; do |
循环显示所有背景色
1 | for i in {40..47}; do |
4. 256 色模式
现代终端支持 256 色模式,使用 \033[38;5;<n>m(前景色)或 \033[48;5;<n>m(背景色),其中 <n> 是 0-255 的颜色编号。
示例:
1 | echo -e "\033[38;5;208mThis is orange (color 208)\033[0m" |
查看 256 色表:
1 | for i in {0..255}; do |
5. True Color(真彩色)
部分现代终端(如 iTerm2、GNOME Terminal)支持 24 位真彩色,使用 RGB 值设置颜色:
1 | \033[38;2;<R>;<G>;<B>m # 前景色 |
<R>,<G>,<B>是 0-255 的红、绿、蓝值。
示例:
1 | echo -e "\033[38;2;255;165;0mThis is orange (RGB: 255,165,0)\033[0m" |
6. 注意事项
终端支持:
- 不同终端对颜色的支持程度不同(例如,Windows CMD 不支持 ANSI 序列,需使用 WSL 或第三方终端)。
- 检查终端是否支持 256 色或真彩色:
echo $TERM(如xterm-256color表示支持 256 色)。
**
echo -e**:- 使用
echo时需加-e参数以解析转义序列。 - 或者使用
printf,如:printf "\033[31mHello\033[0m\n"
- 使用
重置颜色:
- 总是使用
\033[0m重置样式,否则后续输出可能受影响。
- 总是使用
**环境变量
PS1**:- 在提示符中添加颜色,例如:
1
PS1='\[\033[1;32m\]\u@\h:\w\$\[\033[0m\] '
\u:用户名,\h:主机名,\w:工作目录。
- 在提示符中添加颜色,例如:
7. 实际应用
- 美化脚本输出:通过颜色区分错误(红色)、警告(黄色)、成功(绿色)。
- 自定义提示符:在
.bashrc中设置彩色 PS1。 - 日志高亮:在脚本中使用颜色标记关键信息。
示例脚本:
1 |
|
8. 常见问题
- 颜色不显示:
- 确保终端支持 ANSI 序列。
- 检查是否漏加
-e(echo)或是否正确转义。
- 颜色代码记不住:
- 定义变量存储常用颜色代码(如上例中的
RED、GREEN)。
- 定义变量存储常用颜色代码(如上例中的
- 跨平台兼容性:
- Windows 终端需使用 PowerShell 或 WSL2 才能很好支持 ANSI 颜色。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 满杯是幸福 空杯是自由!
评论
