linux shell

关注公众号 jb51net

关闭
首页 > 脚本专栏 > linux shell > Shell中echo输出颜色字体

Shell中echo如何输出颜色字体

作者:leaf9z

在CentOS/Redhat系统中,可以使用`echo -e`结合ANSI转义码来输出彩色文本,基本格式是`echo -e "\033[样式;前景色;背景色m文本\033[0m"`,常用颜色码包括31(红色)、32(绿色)等,建议定义变量简化代码,并注意终端兼容性和非交互式环境

Shell中echo输出颜色字体

CentOS/Redhat系统可以使用echo命令输出带有颜色的字体。

在 Shell 中,可以使用 echo -e 结合 ANSI 转义码来输出带有颜色的文本。以下是详细说明和示例,帮你在终端中实现彩色输出。

什么是echo -e?

ANSI 颜色码基础

ANSI 转义码格式为:\033[<样式>;<前景色>;<背景色>m,其中:

<样式>:控制文本样式(如加粗、下划线),常见值:

<前景色>:文本颜色,常见值:

<背景色>:背景颜色,常见值:

使用echo -e输出颜色

基本语法
echo -e "\033[<样式>;<前景色>;<背景色>m文本\033[0m"

示例

输出红色文本

echo -e "\033[31mthis is red\033[0m"

输出加粗绿色文本

echo -e "\033[1;32mBold Green Text\033[0m"

输出黄色文本带蓝色背景

echo -e "\033[33;44mYellow on Blue\033[0m"

混合多种颜色

echo -e "\033[31mRed\033[0m and \033[32mGreen\033[0m and \033[34mBlue\033[0m"

进阶用法

定义变量简化颜色使用: 为避免反复写复杂转义码,可以定义变量:

RED="\033[31m"
GREEN="\033[32m"
RESET="\033[0m"


echo -e "${RED}Error: Something went wrong!${RESET}"
echo -e "${GREEN}Success: All good!${RESET}"

在脚本中使用

#!/bin/bash
echo -e "\033[1;31m[ERROR]\033[0m Something failed."
echo -e "\033[1;32m[OK]\033[0m Operation completed."

检查终端是否支持颜色: 某些终端可能不支持 ANSI 颜色码,可以检查 $TERM 或使用 tput:

if [ -t 1 ]; then
echo -e "\033[34mThis terminal supports color.\033[0m"
else
echo "This terminal does not support color."
fi

注意事项

终端兼容性

非交互式环境

在脚本输出到文件或管道时,颜色码可能导致乱码。可以用 echo 而不带 -e,或检查是否为终端:

if [ -t 1 ]; then
echo -e "\033[31mRed text\033[0m"
else
echo "Red text"
fi

256 色支持

示例:

echo -e "\033[38;5;208mOrange text\033[0m"

跨 Shell 兼容性

总结

使用 echo -e 结合 ANSI 转义码可以轻松在 Shell 中输出彩色文本。基本格式是 \033[<样式>;<前景色>;<背景色>m文本\033[0m,常用颜色码如 31(红)、32(绿)等。

推荐定义变量简化代码,并注意终端兼容性和非交互式环境。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文