更改 echo 命令输出的颜色

在类 UNIX 操作系统中,echo 命令用于在终端上显示字符串。

通常, echo 命令的输出颜色遵循终端主题,这没有什么不寻常的。

但是,如果您愿意,您可以更改 Linux 中 echo 命令的输出文本的颜色。

你为什么想这么做? 这可能有几个原因。 例如,如果您正在编写一个需要警告用户的步骤的脚本,则使用红色输出可能会很有用。

让我告诉您如何将文本颜色从黑色或白色完全更改为其他颜色,例如黄色、红色、绿色。

彩色输出的 ANSI 转义码

要更改 echo 命令的输出颜色,您必须使用转义序列。

一个受欢迎的 example 您过去可能使用过的转义序列中的一个是我们用于换行符的 ‘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

您可以将这些转义码与 '33[',然后是您选择的颜色的 ANSI 转义码,最后是 'm'.

下面是一些如何将 ANSI 颜色代码串在一起的示例:

R='33[0;31m'   #'0;31' is Red's ANSI color code
G='33[0;32m'   #'0;32' is Green's ANSI color code
Y='33[1;32m'   #'1;32' is Yellow's ANSI color code
B='33[0;34m'   #'0;34' is Blue's ANSI color code

此转义字符的用法类似于您如何使用反斜杠“”和“n”来表示换行符。

echo 命令中的彩色输出

您可以在 echo 命令中使用指定的颜色作为“变量”,并在任何文本之前提及它,以使文本在终端输出中以所述颜色显示。

每当您使用任何特殊的转义序列(如 ‘n’、’t’ 或这些用于颜色的转义序列与 echo 命令时,请确保在 echo 命令中使用“-e”标志)。

在这个 example,我用颜色代码声明了两个变量。 第一个是红色,“NOCOLOR”是停止红色并切换回默认颜色。

如您所见,它以红色显示文本“爱”。 我直接在shell中使用它。 您可以以相同的方式将其放入脚本中:

#!/bin/bash

RED='33[0;31m'
NOCOLOR='33[0m'
echo -e "I ${RED}love${NOCOLOR} Linux"

这是另一个 example 在 echo 命令输出中有更多颜色:

这一次,由于文本字符串中的最后一个字符需要为黄色,因此可以不使用“NOCOLOR”切换回常规颜色。

您也可以为 printf 的输出添加颜色

如果你想要一个格式化的字符串,你最好使用 printf 命令而不是 echo 命令。

一旦你定义了颜色的转义序列——这与你使用的 echo 完全相同,你也可以将它与 printf 一起使用。

在这里,我对回声做了同样的事情,我指定并使用了“NOCOLOR”变量来停止使用红色并在“爱”这个词之后切换回默认颜色。

额外提示:使用在线工具生成颜色

GitHub用户 Gbox4 创建了一个 非常有帮助的网站 称为“ANSI 代码生成器”,可帮助您为您生成这些转义序列。

它允许您从多种颜色中选择文本背景和文本前景(文本颜色)、样式 – 粗体、斜体、下划线或删除线。

然后您可以轻松地将自动生成的代码存储到 bash 变量以供将来使用。

ANSI 转义码生成器

结论

既然您知道如何为 echo 命令输出添加颜色,您就可以让您的 bash 脚本更有用和更有吸引力。

由于 printf 命令更具可预测性,允许格式化我们的输出并且高度可配置,如果您有特定的议程,我建议您使用 printf 路线。

如果您要完成一项简单的任务,请使用 echo 命令。