在类Unix操作系统的日常运维与开发工作中,Shell脚本是提升效率的得力助手,它能将一系列繁琐的操作自动化,帮我们节省大量时间。但默认情况下,Shell脚本的输出都是单调的黑白样式,长时间查看很容易产生视觉疲劳,关键信息也难以快速捕捉。其实,只需简单几步,我们就能给Shell脚本的输出“穿上彩衣”,让它既美观又实用。今天,就来详细聊聊如何在Shell脚本中设置文本颜色、字体样式和背景色。

认识Shell脚本:自动化的基础

首先,我们得明确什么是Shell脚本。简单来说,它就是一份命令清单,Shell(一种执行命令的程序)会按照顺序依次执行这些命令。无论是简单地输出一段提示文本,还是复杂地按特定流程运行多个命令完成系统部署,Shell脚本都能胜任。

在众多Shell类型中,Bash(Bourne Again SHell)是最常用的一种。它在保留传统Shell功能的基础上,新增了很多实用特性,不仅让编写脚本更加便捷,还能提升我们在终端中的操作体验,所以目前大多数Shell脚本都基于Bash编写。

色彩魔法的关键:ANSI转义序列

要让Shell脚本的输出呈现出丰富的色彩和样式,核心在于使用ANSI转义序列。这是一组特殊的代码,终端能够识别这些代码,并根据代码指令改变文本的显示效果,比如颜色、字体粗细、是否下划线等。

下面为大家整理了常用的ANSI转义序列代码,记住这些,就能轻松开启Shell脚本的“色彩之旅”。

1. 文本颜色代码

通过这些代码,可以改变文本本身的颜色,其中“文本重置”代码非常重要,使用完彩色文本后,一定要用它将颜色恢复为默认,避免后续输出持续受影响。

效果 代码
文本重置 \e[0m
黑色文本 \e[0;30m
红色文本 \e[0;31m
绿色文本 \e[0;32m
黄色文本 \e[0;33m
蓝色文本 \e[0;34m
紫色文本 \e[0;35m
青色文本 \e[0;36m
白色文本 \e[0;37m

2. 背景颜色代码

如果想让文本背景呈现不同颜色,只需将文本颜色代码中第二个数字改为4即可,具体代码如下:

效果 代码
黑色背景 \e[40m
红色背景 \e[41m
绿色背景 \e[42m
黄色背景 \e[43m
蓝色背景 \e[44m
紫色背景 \e[45m
青色背景 \e[46m
白色背景 \e[47m

3. 字体样式代码

除了颜色,我们还能调整字体样式,常见的加粗和下划线样式对应的代码如下:

效果 代码
加粗文本 \e[1m
下划线文本 \e[4m

实战操作:打印彩色与特殊样式文本

了解了ANSI转义序列后,接下来通过实际示例,看看如何在Shell脚本中运用这些代码。

1. 打印单一颜色文本

如果想打印绿色的“Hello, world!”,可以使用echo命令,配合-e选项(该选项能让echo识别并解析ANSI转义序列),具体命令如下:

echo -e "\e[0;32mHello, world!\e[0m"

这里,\e[0;32m将文本设置为绿色,\e[0m在文本结束后将颜色重置为默认,避免影响后续输出。

2. 借助变量简化代码

如果脚本中多次使用不同颜色,直接写代码会显得杂乱,且不易修改。这时,我们可以将颜色代码定义为变量,让脚本更易读、更易维护。例如:

RED='\e[0;31m'
NC='\e[0m' # 代表“无颜色”,用于重置
echo -e "I ${RED}love${NC} shell scripting"

执行这段脚本后,会输出“I love shell scripting”,其中“love”一词会以红色显示,其余部分为默认颜色。

3. 设置字体样式与背景色

除了文本颜色,我们还能组合使用字体样式和背景色代码。比如,打印加粗且带有蓝色背景的文本:

echo -e "\e[1m\e[44mBold text with blue background\e[0m"

再比如,打印下划线且带有黄色背景的文本:

echo -e "\e[4m\e[43mUnderlined text with yellow background\e[0m"

同样,记得在文本结束后使用\e[0m重置所有样式和颜色。

总结

通过ANSI转义序列,我们能轻松为Shell脚本的输出添加色彩和特殊样式,让原本单调的命令行输出变得生动易懂,关键信息也能一目了然。但在使用过程中,有一点需要注意:不要过度追求复杂的样式,保持代码的简洁和高效始终是首要原则。