bash脚本输出带颜色的字符串
2022-02-11 本文已影响0人
itsenlin
在linux下工作学习时,使用最多的就是bash脚本,很多时候要输出一些信息,为了更容易处理输出的信息,可以在输出时显示成不同的颜色
linux下的echo命令提供了一个简单好用的方法来实现
实例
先来一个例子直观的感受一下
image.png
echo
在linux下,通过man命令可以查看echo命令的帮助信息,如下
ECHO(1) User Commands ECHO(1)
NAME
echo - display a line of text
SYNOPSIS
echo [SHORT-OPTION]... [STRING]...
echo LONG-OPTION
DESCRIPTION
Echo the STRING(s) to standard output.
-n do not output the trailing newline
-e enable interpretation of backslash escapes
-E disable interpretation of backslash escapes (default)
--help display this help and exit
--version
output version information and exit
If -e is in effect, the following sequences are recognized:
\\ backslash
\a alert (BEL)
\b backspace
\c produce no further output
\e escape
\f form feed
\n new line
\r carriage return
\t horizontal tab
\v vertical tab
\0NNN byte with octal value NNN (1 to 3 digits)
\xHH byte with hexadecimal value HH (1 to 2 digits)
NOTE: your shell may have its own version of echo, which usually supersedes the version described here. Please refer to your shell's documentation for details about the options it supports.
这里要使用-e
选项,即“使能对反斜杠转义的解析”,我们在使用echo命令输出信息时,就是通过特殊的转义字符来实现的字符串带颜色
转义说明
实例中看到echo输出的字符串中的开头和结尾都出现了一些特殊符号,这些就是特殊的转义字符,
用于在字符显示系统中控制光标移动和字符色彩的特殊转义控制也称为ANSI控制码,以ESC[
开头,后面跟不同的控制码,而ESC
要使用\033
或者\e
来实现
显示字符属性控制码
控制码 | 说明 |
---|---|
[n1;n2;......m |
设定显示字符的属性状态。若有两个以上设定则以分号将代码(n1;n2;..)隔开除非重新设定,否则原设定之属性一直被保留。 |
其中n1; n2等代码分为两种
表示颜色的代码
字体颜色代码 | 字符背景颜色代码 | 颜色 |
---|---|---|
30 | 40 | 黑色 |
31 | 41 | 红色 |
32 | 42 | 绿色 |
33 | 43 | 黄色 |
34 | 44 | 蓝色 |
35 | 45 | 紫红色 |
36 | 46 | 青蓝色 |
37 | 47 | 白色 |
上面实例中使用的\e[31m
就是表示后面字符串显示为红色
特殊代码
代码 | 含义 |
---|---|
0 | 所有属性 OFF,即返回正常显示模式 (Normal) |
1 | 高亮度显示 (Bright) |
4 | 加下划线 (Underline) |
5 | 闪烁显示 (Flash) |
7 | 反相显示 (Inverse) |
8 | 不可见 (Invisable) |
上面实例中使用的\e[0m
就是表示关闭控制,返回正常显示模式,如果不关闭的话,后面所有显示都会以前面设置的控制显示,如下
增加下划线实例如下
image.png
还有一些其他的一些ANSI控制码,当前已经可以满足大部分需求,有需要的时候再补充