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

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

2011-12-07 11:04 471 查看
 
 
在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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  shell google 脚本 终端