在shell中使用echo命令输出带颜色的文本 google了好久,终于搞明白了怎么输出带颜色的文本。 首先熟悉一下echo命令 名称 echo - 显示一行文本 概要 echo [选项]... [字符串]... 描述 向标准输出输出字符串。 -n 不输出换行符 -e 打开反斜杠ESC转义 -E 取消反斜杠ESC转义 (默认) --help 显示帮助 --version 显示版本 大致就这样吧。 注意要输出颜色必须有 -e 选项。 然后说一下重点:ANSI控制码在输出有颜色文本方面应用。 -e 用来开启echo中的转义 \e 或 \033 来输出Esc符号 设置颜色的格式: \e[背景色;前景色;高亮m 恢复默认为 \e[0m 其中背景色可以被以下数字替换 0 透明(使用终端颜色), 40 黑, 41 红, 42 绿, 43 黄, 44 蓝 45 紫, 46 青绿, 47白(灰) 前景色(也就是文本的颜色)可以被以下数字替换 30 黑 31 红, 32 绿, 33 黄, 34 蓝, 35 紫, 36 青绿, 37 白(灰) 高亮是1,不高亮是0 注意m后面紧跟字符串。 比如 lonelycorn@untbook:~$ echo -e '\033[0;33;1mabc\033[0m' 输出 abc 然后给几个比较强大的脚本函数 1 cfont #by zuoyang http://hi.baidu.com/test/ cfont() { while (($#!=0)) do case $1 in -b) echo -ne " "; ;; -t) echo -ne "\t"; ;; -n) echo -ne "\n"; ;; -black) echo -ne "\033[30m"; ;; -red) echo -ne "\033[31m"; ;; -green) echo -ne "\033[32m"; ;; -yellow) echo -ne "\033[33m"; ;; -blue) echo -ne "\033[34m"; ;; -purple) echo -ne "\033[35m"; ;; -cyan) echo -ne "\033[36m"; ;; -white|-gray) echo -ne "\033[37m"; ;; -reset) echo -ne "\033[0m"; ;; -h|-help|--help) echo "Usage: cfont -color1 message1 -color2 message2 ..."; echo "eg: cfont -red [ -blue message1 message2 -red ]"; ;; *) echo -ne "$1" ;; esac shift done } 使用方法是 cfont -颜色 字符串... 如: cfont -cyan abc 注意使用时要换行需要加入 -n 选项。想要恢复默认的要加入 -reset选项。 2颜色码表 #!/bin/bash T='gYw' # The test text echo echo " default 40m 41m 42m 43m 44m 45m 46m 47m" ## FGs 为前景(foreground)色, BG 为背景(background)色 for FGs in ' m' ' 1m' ' 30m' '1;30m' ' 31m' '1;31m' ' 32m' '1;32m' ' 33m' '1;33m' ' 34m' '1;34m' ' 35m' '1;35m' ' 36m' '1;36m' ' 37m' '1;37m' do FG=$(echo $FGs|tr -d ' ') echo -en " $FGs \033[$FG $T " for BG in 40m 41m 42m 43m 44m 45m 46m 47m; do echo -en " \033[$FG\033[$BG $T \033[0m" done echo done echo