更改 echo 命令输出的颜色
在类UNIX操作系统中,echo命令用于将一串字符显示到终端上。
通常,echo 命令的输出颜色遵循终端主题,这没有什么不寻常的。
但是如果您愿意,您可以更改 Linux 中 echo 命令的输出文本的颜色。
你为什么要这么做?原因可能有很多。例如,如果你正在编写一个脚本,其中有一个步骤需要警告用户,那么使用红色输出可能会很有用。
让我告诉您如何将文本颜色从黑色或白色更改为其他颜色,例如黄色、红色、绿色。
彩色输出的 ANSI 转义码
要改变 echo 命令的输出颜色,您必须使用转义序列。
您过去可能使用过的转义序列的一个常见示例是我们用于换行符的“\n”。同样,也有用于指定彩色输出的转义序列。
以下是每种颜色的一些 ANSI 转义代码:
Black 0;30 Dark Gray 1;30
Red 0;31 Light Red 1;31
Green 0;32 Light Green 1;32
Brown/Orange 0;33 Yellow 1;33
Blue 0;34 Light Blue 1;34
Purple 0;35 Light Purple 1;35
Cyan 0;36 Light Cyan 1;36
Light Gray 0;37 White 1;37
您可以将 这些转义代码与 一起使用'\033['
,后跟您选择的颜色的 ANSI 转义代码,最后是'm'
。
下面是一些如何将 ANSI 颜色代码串在一起的示例:
R='\033[0;31m' #'0;31' is Red's ANSI color code
G='\033[0;32m' #'0;32' is Green's ANSI color code
Y='\033[1;32m' #'1;32' is Yellow's ANSI color code
B='\033[0;34m' #'0;34' is Blue's ANSI color code
此转义字符的用法类似于使用反斜杠“\”和“n”来表示换行符。
echo 命令中的彩色输出
您可以在 echo 命令中将指定的颜色用作“变量”,并在任何文本之前提及它,以使文本在终端输出中以所述颜色显示。
无论何时,当您使用任何特殊转义序列(如“\n”、“\t”)或带有 echo 命令的颜色转义序列时,请确保在 echo 命令中使用“-e”标志。
在这个例子中,我声明了两个带有颜色代码的变量。第一个变量表示红色,而“NOCOLOR”表示停止红色并切换回默认颜色。
如您所见,它以红色显示了文本“love”。我直接在 shell 中使用它。您可以以相同的方式将其放入脚本中:
#!/bin/bash
RED='\033[0;31m'
NOCOLOR='\033[0m'
echo -e "I ${RED}love${NOCOLOR} Linux"
下面是 echo 命令输出中具有更多颜色的另一个示例:
这次,由于文本字符串中的最后一个字符需要为黄色,因此可以不通过使用“NOCOLOR”切换回常规颜色。
您还可以为 printf 的输出添加颜色
如果您想要格式化的字符串,最好使用 printf 命令而不是 echo 命令。
一旦定义了颜色的转义序列(与用于 echo 的完全相同),您也可以将其与 printf 一起使用。
在这里,我做了与对 echo 相同的事情,我指定并使用了“NOCOLOR”变量来停止使用红色并在“love”一词后切换回默认颜色。
额外提示:使用在线工具生成颜色
GitHub 用户Gbox4创建了一个非常有用的网站,名为“ANSI 代码生成器”,可以帮助您生成这些转义序列。
它允许您从多种颜色中选择文本背景和文本前景(文本颜色),样式 - 粗体,斜体,下划线或删除线。
然后您可以轻松地将自动生成的代码存储到bash 变量中以供将来使用。
结论
现在您知道如何向 echo 命令输出添加颜色,您可以使您的 bash 脚本更加实用和有吸引力。
由于 printf 命令更可预测,允许格式化我们的输出并且高度可配置,如果您有特定的议程,我建议您采用 printf 路线。
如果您正在完成一个简单的任务,请使用 echo 命令。