Shell中echo输出颜色字体🎨

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"
示例
  1. 输出红色文本
    echo -e "\033[31mthis is red\033[0m"
    image
  2. 输出加粗绿色文本
    echo -e "\033[1;32mBold Green Text\033[0m"

    image

  3. 输出黄色文本带蓝色背景
    echo -e "\033[33;44mYellow on Blue\033[0m"
    image
  4. 混合多种颜色
    echo -e "\033[31mRed\033[0m and \033[32mGreen\033[0m and \033[34mBlue\033[0m"
     
    image
     
     

进阶用法

  1. 定义变量简化颜色使用: 为避免反复写复杂转义码,可以定义变量:
    RED="\033[31m"
    GREEN="\033[32m"
    RESET="\033[0m"
    
    
    echo -e "${RED}Error: Something went wrong!${RESET}"
    echo -e "${GREEN}Success: All good!${RESET}"
     
  2. 在脚本中使用
    #!/bin/bash
    echo -e "\033[1;31m[ERROR]\033[0m Something failed."
    echo -e "\033[1;32m[OK]\033[0m Operation completed."
     
  3. 检查终端是否支持颜色: 某些终端可能不支持 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

注意事项

  1. 终端兼容性
    • 大多数现代终端(例如 bashzsh、Linux 终端、macOS Terminal)支持 ANSI 颜色码。
    • 某些环境(例如某些远程 SSH 客户端或旧终端)可能不支持,需确保 $TERM 设置正确(如 xterm-256color)。
    • 检查:echo $TERM,必要时设置 export TERM=xterm-256color
  2. 非交互式环境
    • 在脚本输出到文件或管道时,颜色码可能导致乱码。可以用 echo 而不带 -e,或检查是否为终端:
      if [ -t 1 ]; then
      echo -e "\033[31mRed text\033[0m"
      else
      echo "Red text"
      fi
  3. 256 色支持
    • 如果终端支持 256 色,可以使用 \033[38;5;<n>m(前景色)或 \033[48;5;<n>m(背景色),其中 <n> 是 0-255 的颜色编号。
    • 示例:
      echo -e "\033[38;5;208mOrange text\033[0m"
       
  4. 跨 Shell 兼容性
    • bash 中,\033\e 都可以用,但在某些 Shell(如 zsh)中,\e 更通用。
    • 如果在 zsh 中有问题,尝试用 \033

总结

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

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

posted @ 2025-08-22 19:59  Noleaf  阅读(130)  评论(0)    收藏  举报