echo 进阶:实现终端打印的高亮、闪烁与颜色定制
扫描二维码
随时随地手机看文章
在执行脚本的过程中,有时我们需要时刻关注脚本的打印信息,从而判断脚本执行是否正常,当脚本打印信息较多时,我们需要将关键打印更明显的展现出来,此时可以使用echo加上ANSI 转义序列达到此目的。在支持 ANSI 转义序列的终端,可以对打印信息实现如下效果:文字闪烁、指定文字颜色、文字加粗、高亮显示文字。
echo -e "running for icxiaoge project... "
echo -e "\033[5;31m running for icxiaoge project... \033[0m"

如图所示,这条语句echo -e "\033[5;31m running for icxiaoge project... \033[0m" 的作用是在支持 ANSI 转义序列的终端中输出一段带有特殊格式的文本,具体是让文字显示为 红色、闪烁 的效果,内容为 running for icxiaoge project。
echo -eecho是输出文本的命令;-e选项表示“启用转义字符解析”,让后续的\033[...这类特殊序列生效(否则会被当作普通文本输出)。\033[5;31m是 ANSI 转义序列(控制终端文本样式的标准),用于设置文本格式:\033[是转义序列的起始标志(\033对应 ASCII 中的“ESC 键”,表示开始控制命令);5表示“闪烁模式”(让文字闪烁);31表示“文本颜色为红色”(ANSI 颜色码:30=黑、31=红、32=绿等);m是转义序列的结束标志,之后的文本会应用前面的样式。running for icxiaoge project...这是实际要输出的内容,会以“红色、闪烁”的样式显示,通常用于强调某个正在执行的任务(这里是提示“正在为icxiaoge项目运行...”)。\033[0m这是另一个 ANSI 转义序列,0表示“重置所有样式”,即后续的文本会恢复为终端默认的样式(取消闪烁和红色)。如果没有这个重置,后续终端输出的所有文字都会保持红色闪烁,这通常是不希望的。
在 ANSI 转义序列中,存在多种文本显示模式
常用显示模式参数
如下是较为常用的几个显示模式
如图所示:
参数7 为反显模式,前景色与背景色互换了,突出效果明显
参数5 为闪烁效果,则在部分终端中不支持
参数9 为删除线,表示已经过时的信息

echo -e "\033[1;31m running for icxiaoge project... \033[0m"
echo -e "\033[2;31m running for icxiaoge project... \033[0m"
echo -e "\033[3;31m running for icxiaoge project... \033[0m"
echo -e "\033[7;31m running for icxiaoge project... \033[0m"
echo -e "\033[9;31m running for icxiaoge project... \033[0m"
ANSI 颜色码
ANSI 颜色码是通过 ANSI 转义序列控制终端文本颜色的标准编码,主要分为 基础 8/16 色、256 色 和 真彩色(RGB) 三大类。如下章节将简单描述 基础 8/16 色。
基础 8/16 色 编码表
通过控制码设置 前景色(文本颜色) 和 背景色(文本底色)就能达到很好的显示效果,更复杂的设置可以不需要。而且基础的设置在不同的终端上更容易适配。
# 红色文本(前景色 31)echo -e "\033[31m 这是红色文本 \033[0m"# 绿色背景(背景色 42)+ 黑色文本(前景色 30)echo -e "\033[42;30m 绿底黑字 \033[0m"# 高亮蓝色文本(94)+ 下划线(4)echo -e "\033[94;4m 高亮蓝色下划线文本 \033[0m"# 重置样式(0)必须加,否则后续文本会继承颜色

echo -e "\033[41;30m print message \033[0m"
echo -e "\033[41;33m print message \033[0m"
echo -e "\033[41;43m print message \033[0m"
echo -e "\033[34;43m print message \033[0m"
echo -e "\033[35;43m print message \033[0m"
echo -e "\033[35;47m print message \033[0m"
echo -e "\033[30;47m print message \033[0m"






