Chinaunix首页 | 论坛 | 博客
  • 博客访问: 739385
  • 博文数量: 124
  • 博客积分: 3156
  • 博客等级: 中校
  • 技术积分: 1584
  • 用 户 组: 普通用户
  • 注册时间: 2008-08-02 10:29
文章分类

全部博文(124)

文章存档

2012年(3)

2011年(2)

2010年(61)

2009年(34)

2008年(24)

我的朋友

分类: LINUX

2010-05-14 10:35:46


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



名称
       echo - 显示一行文本

概要
       echo [选项]... [字符串]...

描述
       向标准输出输出字符串。

       -n     不输出换行符

       -e     打开反斜杠ESC转义

       -E     取消反斜杠ESC转义 (默认)

       --help 显示帮助

       --version 显示版本


大致就这样吧。
注意要输出颜色必须有 -e 选项。

然后说一下重点:ANSI控制码在输出有颜色文本方面应用。

-e 用来开启echo中的转义
\e 或 \033 来输出Esc符号
设置颜色的格式: \e[背景色;前景色;高亮m
               \033
[背景色;前景色;高亮m
恢复默认为 \e[0m
其中背景色可以被以下数字替换
第一个参数:
0 透明(使用终端颜色),1 高亮 40 黑, 41 红, 42 绿, 43 黄, 44 蓝 45 紫, 46 青
绿, 47白(灰)
第二个参数:
前景色(也就是文本的颜色)可以被以下数字替换
30 黑 31 红, 32 绿, 33 黄, 34 蓝, 35 紫, 36 青绿, 37 白(灰)
第三个参数:
高亮是1,不高亮是0
第四个参数为m:
注意m后面紧跟字符串。

实例:
1,输出红色字体
abc,背景色不变,以下三个效果一样
echo -e '\033[0;31;1m abc \033[0m'
echo -e "\e[1;31m    
abc \e[0m"
echo -e "\e[0;31;1m   abc \e[0m"

2,输出黄色字体 abc,红色背景色,以下三个效果一样
echo -e '\033[41;33;1m abc \033[0m'
echo -e "\e[41;33m    
abc \e[0m"
echo -e "\e[41;33;1m   abc \e[0m"

30 黑 31 红, 32 绿, 33 黄, 34 蓝, 35 紫, 36 青绿, 37 白(灰)
echo -e "\e[1;30m skyapp exist \e[0m" //黑色
echo -e "\e[1;31m skyapp exist \e[0m" //红色
echo -e "\e[1;32m skyapp exist \e[0m" //绿色
echo -e "\e[1;33m skyapp exist \e[0m" //黄色
echo -e "\e[1;34m skyapp exist \e[0m" //蓝色
echo -e "\e[1;35m skyapp exist \e[0m" //紫色
echo -e "\e[1;36m skyapp exist \e[0m" //青绿
echo -e "\e[1;37m skyapp exist \e[0m" //白(灰)

嵌入式中用一下方法:
echo -e "^[[1;30m skyapp exist ^[[0m" //黑色
echo -e "^[[1;31m skyapp exist ^[[0m" //红色
echo -e "^[[1;32m skyapp exist ^[[0m" //绿色
echo -e "^[[1;33m skyapp exist ^[[0m" //黄色
echo -e "^[[1;34m skyapp exist ^[[0m" //蓝色
echo -e "^[[1;35m skyapp exist ^[[0m" //紫色
echo -e "^[[1;36m skyapp exist ^[[0m" //青绿
echo -e "^[[1;37m skyapp exist ^[[0m" //白(灰)
注意:^[  的输入方法是ctrl+v键,再按ESC键

然后给几个比较强大的脚本函数
1 cfont
#by zuoyang
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

没了,就这样吧。
 

如何在脚本文件中控制输出的颜色  (效果不太好)
比如
echo "Error."
我想让Error显示为红色
--------------------------
echo  '^[[40;31m显示内容'
注意:^[  的输入方法是ctrl+v键,再按ESC键
第二个 [  是直接输入 [ 的
;前的数字是背景色,后面为前景色
背景色:
40黑41红42绿43黄44青45蓝46青47白
前景色:
30黑31红32绿33黄34蓝35紫36青37白


!4231E07B7DE2C479!235.entry(转)
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 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 没了,就这样吧。
阅读(19117) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~