shell输出时的显示效果
由于平时测试需要,将一些输出结果分别显示在屏幕上,又要区分不同的信息,故而可以使显示的的部分意不同的颜色或是闪烁状态显示出来。
网上搜索后,发现很不错的文章,讲解的很详细,使用过之后,很方便,故将文章引用过来。
在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 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
没了,就这样吧。
如何在脚本文件中控制输出的颜色 (效果不太好)
比如
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白
编码 颜色/动作
0 重新设置属性到缺省设置
1 设置粗体
2 设置一半亮度(模拟彩色显示器的颜色)
4 设置下划线(模拟彩色显示器的颜色)
5 设置闪烁
7 设置反向图象
22 设置一般密度
24 关闭下划线
25 关闭闪烁
27 关闭反向图象
30 设置黑色前景
31 设置红色前景
32 设置绿色前景
33 设置棕色前景
34 设置蓝色前景
35 设置紫色前景
36 设置青色前景
37 设置白色前景
38 在缺省的前景颜色上设置下划线
39 在缺省的前景颜色上关闭下划线
40 设置黑色背景
41 设置红色背景
42 设置绿色背景
43 设置棕色背景
44 设置蓝色背景
45 设置紫色背景
46 设置青色背景
47 设置白色背景
49 设置缺省黑色背景
其他有趣的代码还有:
\033[2J 清除屏幕
\033[0q 关闭所有的键盘指示灯
\033[1q 设置“滚动锁定”指示灯 (Scroll Lock)
\033[2q 设置“数值锁定”指示灯 (Num Lock)
\033[3q 设置“大写锁定”指示灯 (Caps Lock)
\033[15:40H 把关闭移动到第15行,40列
\007 发蜂鸣生beep
#######################
RedHat的字体和背景颜色的改变方法:
命令:
PS1="[\e[32;1m\u@\h \W]\\$"
或
export PS1="[\e[32;1m\u@\h \W]\\$" 两者的区别请查看环境变量的相关资料
解释:
\e[32;1m:这就是控制字体和背景颜色的转义字符,30~37是字体颜色、40~47是背景颜色
例
子中的32;1m数字的位置是可以对调的如\e[1;32m,如果是在X环境下可以更换一下1的范围0~10,可能有的没用处:0或者不写(\e
[0;32m或\e[;32m)显示浅颜色,1:显示高亮
4:加下划线.....如果改后的效果不好,但是又还原不了,那就不写m前面的数字,如\e[32;m,或者直接注销再登陆
\u \h \W:这是一些转义字符,下面详细解释:
\d :代表日期,格式为weekday month date,例如:"Mon Aug 1"
\H :完整的主机名称。例如:我的机器名称为:fc4.linux,则这个名称就是fc4.linux
\h :仅取主机的第一个名字,如上例,则为fc4,.linux则被省略
\t :显示时间为24小时格式,如:HH:MM:SS
\T :显示时间为12小时格式
\A :显示时间为24小时格式:HH:MM
\u :当前用户的账号名称
\v :BASH的版本信息
\w :完整的工作目录名称。家目录会以 ~代替
\W :利用basename取得工作目录名称,所以只会列出最后一个目录
\# :下达的第几个命令
\$ :提示字符,如果是root时,提示符为:# ,普通用户则为:$
\n :新建一行
字体并不局限于一个颜色,可以有多个颜色:
PS1="[\e[32;1m\u@\e[35;1m\h \e[31;1m\W]\\$"
以上两个命令在注销后再登陆就失效了,用下面方法使其永久生效:
vi /etc/profile
在“export PATH .....”下面添加一行:export PS1="[\e[32;1m\u@\h \W]\\$"
注销再登陆,就成功了,如果没生效,使用source /etc/profile 命令试试,或者直接重启机器。
附带:
自己测试时写的断网一段时间后,启动网络的简单脚本
#bin/bash
sleeptime=1200
service network stop
if [ $? -eq 0 ]
then
echo -e "\033[49;32;5m stop network sucess"
fi
echo -e "\033[49;32;5m network is not running"
sleep $sleeptime
service network start
if [ $? -eq 0 ]
then
echo -e "\033[49;32;5m start network sucess"
fi
echo -e "\033[49;32;5m network is running"

浙公网安备 33010602011771号