您的位置:首页 > 运维架构 > Shell

在shell中使用echo命令输出带颜色的文本

2016-11-01 00:00 260 查看
首先熟悉一下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'

输出

<div style="color:yellow">abc</div>

给个比较强大的脚本函数

#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选项。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: