当前位置: 首页 > news >正文

【shell】终端文本的颜色和样式打印

在Shell脚本中,\033[XXmANSI转义序列,用于控制终端文本的颜色和样式。以下是完整的颜色和样式代码列表:


1. 基本格式

echo -e "\033[CODEm你的文本\033[0m"
  • \033[:转义序列开始(\e[\x1b[ 等效)。
  • CODE:颜色/样式代码(见下表)。
  • m:结束代码标记。
  • \033[0m:重置所有样式(避免影响后续输出)。

2. 颜色代码表

(1)标准前景色(文本颜色)
颜色代码示例
黑色30echo -e "\033[30m黑色\033[0m"
红色31echo -e "\033[31m红色\033[0m"
绿色32echo -e "\033[32m绿色\033[0m"
黄色33echo -e "\033[33m黄色\033[0m"
蓝色34echo -e "\033[34m蓝色\033[0m"
洋红色35echo -e "\033[35m洋红\033[0m"
青色36echo -e "\033[36m青色\033[0m"
白色37echo -e "\033[37m白色\033[0m"
(2)标准背景色
颜色代码示例
黑色背景40echo -e "\033[40m黑底\033[0m"
红色背景41echo -e "\033[41m红底\033[0m"
绿色背景42echo -e "\033[42m绿底\033[0m"
黄色背景43echo -e "\033[43m黄底\033[0m"
蓝色背景44echo -e "\033[44m蓝底\033[0m"
洋红背景45echo -e "\033[45m洋红底\033[0m"
青色背景46echo -e "\033[46m青底\033[0m"
白色背景47echo -e "\033[47m白底\033[0m"
(3)亮色(高亮前景色)
颜色代码示例
亮黑色90echo -e "\033[90m灰黑\033[0m"
亮红色91echo -e "\033[91m亮红\033[0m"
亮绿色92echo -e "\033[92m亮绿\033[0m"
亮黄色93echo -e "\033[93m亮黄\033[0m"
亮蓝色94echo -e "\033[94m亮蓝\033[0m"
亮洋红色95echo -e "\033[95m亮洋红\033[0m"
亮青色96echo -e "\033[96m亮青\033[0m"
亮白色97echo -e "\033[97m亮白\033[0m"
(4)亮色背景
颜色代码示例
亮黑背景100echo -e "\033[100m亮黑底\033[0m"
亮红背景101echo -e "\033[101m亮红底\033[0m"
亮绿背景102echo -e "\033[102m亮绿底\033[0m"
亮黄背景103echo -e "\033[103m亮黄底\033[0m"
亮蓝背景104echo -e "\033[104m亮蓝底\033[0m"
亮洋红背景105echo -e "\033[105m亮洋红底\033[0m"
亮青背景106echo -e "\033[106m亮青底\033[0m"
亮白背景107echo -e "\033[107m亮白底\033[0m"

3. 样式代码

样式代码示例
重置0echo -e "\033[0m重置\033[0m"
加粗1echo -e "\033[1m加粗\033[0m"
暗淡2echo -e "\033[2m暗淡\033[0m"
斜体3echo -e "\033[3m斜体\033[0m"
下划线4echo -e "\033[4m下划线\033[0m"
闪烁5echo -e "\033[5m闪烁\033[0m"
反色7echo -e "\033[7m反色\033[0m"
隐藏8echo -e "\033[8m隐藏\033[0m"

4. 组合使用

可以同时设置多个属性,用分号 ; 分隔:

# 红色 + 加粗 + 绿色背景
echo -e "\033[31;1;42m红字加粗绿底\033[0m"

5. 兼容性说明

  • 部分终端可能不支持某些样式(如闪烁 5 或斜体 3)。
  • 推荐在脚本中优先使用标准颜色(30-37, 40-47, 90-97, 100-107)。

掌握这些代码后,可以轻松为脚本输出添加彩色和样式!


补充:

echo -e "\033[30m黑色\033[0m" 这个命令中,-eecho 命令的一个选项,它的作用是启用转义字符的解释(比如 \033 表示 ASCII 转义字符,用于控制终端颜色)。

具体解释:

  • \033[30m 表示设置文本颜色为黑色。
  • \033[0m 表示重置所有文本属性(恢复默认颜色)。
  • 如果没有 -eecho 会直接输出 \033[30m黑色\033[0m,而不会解析转义序列,导致终端显示的是原始字符而不是彩色文本。

是否可以去除 -e

  • 可以去除,但去除后颜色控制会失效,终端会直接显示 \033[30m黑色\033[0m 这样的原始字符串。
  • 如果你希望保留颜色效果,就不能去掉 -e

替代方案(兼容性更好):

某些系统(如 macOS 的默认 echo)可能不支持 -e,这时可以用 printf 代替:

printf "\033[30m黑色\033[0m\n"

printf 默认支持转义字符,不需要额外选项。)

总结:

  • -e 是让 echo 解析转义字符的关键选项,去掉后颜色控制会失效。
  • 如果跨平台使用,建议用 printf 替代。

相关文章:

  • 滑动窗口209. 长度最小的子数组
  • IP-Guard域用户登录后自动登录代理控制台
  • Vue-cli迁移Rsbuild
  • 重置cursor免费次数(2025.4.17可行)
  • MySQL入门:数据操作CURD
  • SSMS中如何把一个库的表移到另一个库中
  • java 多线程之Worker Thread模式(Thread Pool模式)
  • 基于Django框架的图书索引智能排序系统设计与实现(源码+lw+部署文档+讲解),源码可白嫖!
  • 大数据开发核心技术难点:数据倾斜问题深度解析
  • docker harbor私有仓库登录报错
  • CASS 用户坐标系转换到世界坐标系
  • 阿里云ECS访问不了
  • 【NLP 64、基于LLM的垂直领域【特定领域】问答方案】
  • Java与MySQL数据库连接的JDBC驱动配置教程
  • ORA-00600: internal error code, arguments: [kcratr_nab_less_than_odr], [1],
  • RabbitMQ原理及代码示例
  • ESP32之OTA固件升级流程,基于VSCode环境下的ESP-IDF开发,基于阿里云物联网平台MQTT-TLS连接通信(附源码)
  • 2025华中杯B题——AI实现
  • Ubuntu20.04配置cartographer记录
  • 函数递归:递归的概念
  • 2025上海科技节将于5月17日开幕,拟设6大板块专题活动
  • 中国中古史集刊高质量发展论坛暨《唐史论丛》创刊四十周年纪念会召开
  • 山东滕州车祸致6人遇难,醉驾肇事司机已被刑事拘留
  • 媒体:南京秦淮区卫健委回应一医院涉嫌违规提供试管婴儿服务
  • 听炮检书:柳诒徵1927年的选择
  • 四人自驾游宣恩因酒店爆满无处住宿,求助文旅局后住进局长家