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"示例
- 输出红色文本:
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
 
- 在脚本输出到文件或管道时,颜色码可能导致乱码。可以用 echo 而不带 -e,或检查是否为终端:
- 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(绿)等。
推荐定义变量简化代码,并注意终端兼容性和非交互式环境。
 
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号