为 Bash 脚本添加颜色

2025-05-27

为 Bash 脚本添加颜色

我最近为一个服务器编写了一个接收后 git hook,希望能轻松地区分 hook 的输出和 git 信息。这让我开始研究如何为 bash 输出着色。

通过使用 ANSI 颜色转义码,我们可以为输出字符串添加颜色。ANSI 标准指定了特定的颜色代码;

颜色 前台代码 背景代码
黑色的 三十 40
红色的 31 41
绿色的 三十二 四十二
黄色的 33 43
蓝色的 三十四 四十四
品红 三十五 45
青色 三十六 46
浅灰色 三十七 四十七
灰色的 90 100
浅红色 91 101
浅绿色 92 102
浅黄色 93 103
浅蓝色 94 104
浅洋红色 95 105
浅青色 96 106
白色的 97 107

要更改文本的颜色,我们需要的是前景代码。此外,还有一些与我们相关的非颜色特殊代码:

代码 描述
0 重置/正常
1 粗体文本
2 文字模糊
3 斜体
4 带下划线的文本

echo命令会打印出文本。我们需要告诉它,我们处理的是特殊的 ANSI 代码,而不仅仅是常规字符。这可以通过\e在开头添加一个转义序列来实现。用于指定颜色代码的转义序列是\e[COLORm(在本例中,COLOR 代表我们的颜色代码)。默认情况下,echo不支持转义序列。我们需要添加-e选项来启用它们的解释。

因此,为了打印红色文本,我们可以



echo -e "\e[32mRed text\e[0m"


Enter fullscreen mode Exit fullscreen mode

\e[0m意味着我们使用特殊代码 0 将文本颜色重置回正常状态。如果没有这个代码,之后打印的所有其他文本都将是红色的。

这是可行的,但如果我们将颜色代码存储在变量中并使用它们,它将更具可读性。



RED="\e[31m"
ENDCOLOR="\e[0m"

echo -e "${RED}Red text${ENDCOLOR}"


Enter fullscreen mode Exit fullscreen mode

把所有这些放在一起,我们可以得到这样的脚本



#! /usr/bin/env bash

RED="\e[31m"
GREEN="\e[32m"
ENDCOLOR="\e[0m"

echo -e "${RED}This is some red text, ${ENDCOLOR}"
echo -e "${GREEN}And this is some green text${ENDCOLOR}"


Enter fullscreen mode Exit fullscreen mode

演示这个

我们可以组合转义码来获得更精美的输出。



#! /usr/bin/env bash

RED="31"
GREEN="32"
BOLDGREEN="\e[1;${GREEN}m"
ITALICRED="\e[3;${RED}m"
ENDCOLOR="\e[0m"

echo -e "${BOLDGREEN}Behold! Bold, green text.${ENDCOLOR}"
echo -e "${ITALICRED}Italian italics${ENDCOLOR}"


Enter fullscreen mode Exit fullscreen mode

另一个

你可以用多种方式使用这些功能,让你的脚本更简洁。具体组合由你决定。祝你脚本编写愉快!

文章来源:https://dev.to/ifenna__/adding-colors-to-bash-scripts-48g4
PREV
Git 和 GitHub:完整指南 - 第 4 章:分支
NEXT
2025 年最佳免费开源图标和图标包 icons-font-customization 图标集合: