Shell中echo如何输出颜色字体

 更新时间:2026年03月05日 14:53:34   作者: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?

  • echo 是 Shell 中用于打印文本的命令。
  • -e 选项启用对转义字符(例如 \n\t 或 ANSI 颜色码)的解析。
  • ANSI 转义码是一组特殊的字符序列,用于控制终端文本的颜色、样式等。

ANSI 颜色码基础

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

  • \033[ 或 \e[ 是转义序列的开始。

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

  • 0:重置所有样式(默认)
  • 1:加粗
  • 4:下划线

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

  • 30:黑色
  • 31:红色
  • 32:绿色
  • 33:黄色
  • 34:蓝色
  • 35:紫色
  • 36:青色
  • 37:白色

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

  • 40:黑色背景
  • 41:红色背景
  • 42:绿色背景
  • 43:黄色背景
  • 44:蓝色背景
  • 45:紫色背景
  • 46:青色背景
  • 47:白色背景
  • ⭐ 结束:用 \033[0m 重置样式,防止后续文本受影响。

使用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

注意事项

终端兼容性

  • 大多数现代终端(例如 bash、zsh、Linux 终端、macOS Terminal)支持 ANSI 颜色码。
  • 某些环境(例如某些远程 SSH 客户端或旧终端)可能不支持,需确保 $TERM 设置正确(如 xterm-256color)。
  • 检查:echo $TERM,必要时设置 export TERM=xterm-256color。

非交互式环境

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

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

256 色支持

  • 如果终端支持 256 色,可以使用 \033[38;5;<n>m(前景色)或 \033[48;5;<n>m(背景色),其中 <n> 是 0-255 的颜色编号。

示例:

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

跨 Shell 兼容性

  • 在 bash 中,\033 和 \e 都可以用,但在某些 Shell(如 zsh)中,\e 更通用。
  • 如果在 zsh 中有问题,尝试用 \033。

总结

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

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

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

相关文章

  • 快速入门Shell脚本之条件判断语句与循环

    快速入门Shell脚本之条件判断语句与循环

    这篇文章主要介绍了快速入门Shell脚本之条件判断语句与循环,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • 解决centos7 开机/etc/rc.local 不执行的问题

    解决centos7 开机/etc/rc.local 不执行的问题

    下面小编就为大家带来一篇解决centos7 开机/etc/rc.local 不执行的问题。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-03-03
  • 解决bash:/root/.bashrc:Permission denied的问题

    解决bash:/root/.bashrc:Permission denied的问题

    本文主要介绍了解决bash:/root/.bashrc:Permission denied的问题,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-10-10
  • shell脚本开头#!/bin/bash的作用详解

    shell脚本开头#!/bin/bash的作用详解

    在Shell脚本中,#!/bin/bash 是指定脚本使用 Bash 解释器的 shebang 语句,它出现在脚本的第一行,并告诉操作系统使用 Bash 解释器来执行该脚本,这篇文章主要介绍了shell脚本开头#!/bin/bash的作用详解,需要的朋友可以参考下
    2023-12-12
  • Linux进程管理方法介绍

    Linux进程管理方法介绍

    这篇文章介绍了Linux进程管理的方法,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06
  • Linux中shell脚本的jq命令用法详解

    Linux中shell脚本的jq命令用法详解

    这篇文章主要介绍了Linux中shell脚本的jq命令用法详解, jq是一个轻量级的命令行JSON处理工具,用于解析、过滤、修改和操作JSON数据,它提供了一种简洁和灵活的方式来处理JSON数据,可以与其他命令行工具结合使用,需要的朋友可以参考下
    2023-07-07
  • shell脚本实现公司项目部署交付环境预检查的思路

    shell脚本实现公司项目部署交付环境预检查的思路

    这篇文章主要介绍了shell脚本实现公司项目部署交付环境预检查的思路,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-09-09
  • Linux下查看内存使用情况的方法总结

    Linux下查看内存使用情况的方法总结

    在做Linux系统优化的时候,物理内存是其中最重要的一方面,自然的,Linux也提供了非常多的方法来监控宝贵的内存资源的使用情况,下面的清单详细的列出了Linux系统下通过视图工具或命令行来查看内存使用情况的各种方法,需要的朋友可以参考下
    2024-01-01
  • Shell中使用plink工具实现远程批量关机

    Shell中使用plink工具实现远程批量关机

    这篇文章主要介绍了Shell中使用plink工具实现远程批量关机,Plink 是命令行工具,执行远程服务器上的命令,需要的朋友可以参考下
    2014-12-12
  • linux shell 字符串操作(长度,查找,替换)详解

    linux shell 字符串操作(长度,查找,替换)详解

    这篇文章主要介绍了linux shell 字符串操作(长度,查找,替换)详解,需要的朋友可以参考下
    2015-10-10

最新评论