shell脚本中 echo 和 printf 都可以输出内容。示例1:
echo -e "�33[43;35m david use echo say Hello World �33[0m " printf "�33[44;36m david use printf say Hello World �33[0m " echo -e "�33[47;30;5m david use echo say �33[0m Hello World "
输出效果如下:
它的格式是这样的:
echo -e "�33[字背景颜色;字体颜色m 字符串 �33[0m" 或者 printf "�33[字背景颜色;字体颜色m 字符串 �33[0m" 或者 echo -e "�33[字背景颜色;字体颜色m;ascii码m 字符串 �33[0m 字符串(can null) "
格式说明
shell脚本中echo命令是内容显示,echo显示带颜色需要使用参数 -e
格式如下:
echo -e "�33[字背景颜色;文字颜色m字符串�33[0m"
例如:
echo -e "�33[41;36m something here �33[0m"
其中41的位置代表底色, 36的位置是代表字的颜色
注:
1、字背景颜色和文字颜色之间是英文的";"
2、文字颜色后面有个m
3、字符串前后可以没有空格,如果有的话,输出也是同样有空格
特效可以叠加,需要使用“;”隔开,例如:闪烁+下划线+白底色+黑字为 �33[5;4;47;30m闪烁+下划线+白底色+黑字为�33[0m
再来看示例1的第3个命令:
echo -e "�33[47;30;5m david use echo say �33[0m Hello World "
这个命令解释:
47 代表背景色为白色,
30 代表字体为黑色,
5 代表字体闪烁,
0 代表关闭所有属性
输出字符 “david use echo say”,然后重新设置屏幕到缺省设置,输出字符 “Hello World”后颜色回复正常。
-e是echo的一个可选项,用于激活特殊字符的解析器, 也就是对反斜线转义符(即)的解释。�33引导非常规字符序列。意味着设置属性然后结束非常规字符序列,这里起效果的字符是47;30;5和0。修改47;30;5可以生成不同颜色的组合,数值和编码的前后顺序没有关系。
组合命令:
示例2,组合命令:
echo -e "�33[20;1H�33[1;4;32m david use echo say �33[0m Hello World "
这行命令首先�33[20;1H将光标移动到终端第20行第1列,之后的�33[1;4;32m将文本属性设置为高亮、带下划线且颜色为绿色,然后输出Hello,world;最后�33[0m将终端属性设为缺省,这样就不会看到连命令完成后的命令提示符也变了样儿了。 输出效果如下:
我们可以通过各种命令的组合可以实现对终端输出地复杂控制。
输出特效格式控制:
�33[0m 关闭所有属性 �33[1m 设置高亮度 �3[4m 下划线 �33[5m 闪烁 �33[7m 反显 �33[8m 消隐 �33[30m -- �33[37m 设置前景色 �33[40m -- �33[47m 设置背景色 例: echo -e "�33[31m 红色字 �33[0m" echo -e "�33[34m 黄色字 �33[0m" echo -e "�33[41;33m 红底黄字 �33[0m" echo -e "�33[41;37m 红底白字 �33[0m"
字颜色范围(前景颜色):30—–39
echo -e "�33[30m 黑色字 �33[0m" echo -e "�33[31m 红色字 �33[0m" echo -e "�33[32m 绿色字 �33[0m" echo -e "�33[33m 黄色字 �33[0m" echo -e "�33[34m 蓝色字 �33[0m" echo -e "�33[35m 紫色字 �33[0m" echo -e "�33[36m 天蓝字 �33[0m" echo -e "�33[37m 白色字 �33[0m" 38:在缺省的前景颜色上设置下划线 39:在缺省的前景颜色上关闭下划线
补充:上面的例子中,每行后面都有 �33[0m ,是为了使终端显示的颜色恢复到修改背景和字体颜色之前的状态。
字背景颜色范围(背景颜色):40~47
40:黑 41:深红 42:绿 43:黄色 44:蓝色 45:紫色 46:深绿 47:白色 49:设置缺省黑色背景
光标位置等的格式控制:
33[nA 光标上移n行 33[nB 光标下移n行 33[nC 光标右移n行 33[nD 光标左移n行 33[y;xH设置光标位置 33[2J 清屏 33[K 清除从光标到行尾的内容 33[s 保存光标位置 33[u 恢复光标位置 33[?25l 隐藏光标 33[?25h 显示光标
示例3:
echo -e "�33[0m none �33[0m" echo -e "�33[30m black �33[0m" echo -e "�33[1;30m dark_gray �33[0m" echo -e "�33[0;34m blue �33[0m" echo -e "�33[1;34m light_blue �33[0m" echo -e "�33[0;32m green �33[0m" echo -e "�33[1;32m light_green �33[0m" echo -e "�33[0;36m cyan �33[0m" echo -e "�33[1;36m light_cyan �33[0m"
输出效果如下:
echo -e "�33[0;31m red �33[0m" echo -e "�33[1;31m light_red �33[0m" echo -e "�33[0;35m purple �33[0m" echo -e "�33[1;35m light_purple �33[0m" echo -e "�33[0;33m brown �33[0m" echo -e "�33[1;33m yellow �33[0m" echo -e "�33[0;37m light_gray �33[0m" echo -e "�33[1;37m white �33[0m"
输出效果如下:
echo -e "�33[40;37m 黑底白字 �33[0m" echo -e "�33[41;30m 红底黑字 �33[0m" echo -e "�33[42;34m 绿底蓝字 �33[0m" echo -e "�33[43;34m 黄底蓝字 �33[0m" echo -e "�33[44;30m 蓝底黑字 �33[0m" echo -e "�33[45;30m 紫底黑字 �33[0m" echo -e "�33[46;30m 天蓝底黑字 �33[0m" echo -e "�33[47;34m 白底蓝字 �33[0m" echo -e "�33[4;31m 下划线红字 �33[0m" echo -e "�33[5;31m 红字在闪烁 �33[0m" echo -e "�33[8m 消隐 �33[0m "
输出效果如下:
范围参考:
0 重新设置属性到缺省设置 1 设置粗体 2 设置一半亮度(模拟彩色显示器的颜色) 4 设置下划线(模拟彩色显示器的颜色) 5 设置闪烁 7 设置反向图象 8 消隐 22 设置一般密度 24 关闭下划线 25 关闭闪烁 27 关闭反向图象 // 字体颜范围(前景颜色):30~39 30:黑 31:红 32:绿 33:黄 34:蓝色 35:紫色 36:深绿 37:白色 38:在缺省的前景颜色上设置下划线 39:在缺省的前景颜色上关闭下划线 // 字背景颜色范围(背景颜色):40~49 40:黑 41:深红 42:绿 43:黄色 44:蓝色 45:紫色 46:深绿 47:白色 nA 光标上移n行 nB 光标下移n行 nC 光标右移n行 nD 光标左移n行 y;xH设置光标位置 2J 清屏 K 清除从光标到行尾的内容 s 保存光标位置 u 恢复光标位置 ?25l 隐藏光标 ?25h 显示光标
预先定义颜色变量
如果是通过bash脚本执行,多次频繁的输出展示,那么可以通过变量简化样式格式引用:
#! /bin/bash ## author:xiongzaiqiren RED_COLOR='E[1;31m' YELOW_COLOR='E[1;33m' BLUE_COLOR='E[1;34m' RESET='E[0m' #需要使用echo -e echo -e "${RED_COLOR}===david say red color===${RESET}" echo -e "${YELOW_COLOR}===david say yelow color===${RESET}" echo -e "${BLUE_COLOR}===david say green color===${RESET}"
输出效果如下:
将自定义颜色格式定义成变量,然后在具体工作是运用的实例。
定义颜色动作, 把echo -en也定义到变量中。使用时直接调用颜色动作即可。
倒计时(利用 来实现回到行首覆盖输出)
#! /bin/bash ## author:xiongzaiqiqren ##### 定义颜色动作, 把echo -en也定义到变量中 SETCOLOR_BLACK="echo -en \E[1;30m" SETCOLOR_FAILURE="echo -en \E[1;31m" SETCOLOR_SUCCESS="echo -en \E[1;32m" SETCOLOR_WARNING="echo -en \E[1;33m" SETCOLOR_INFO="echo -en \E[1;34m" SETCOLOR_REMIND="echo -en \E[1;35m" SETCOLOR_BUG="echo -en \E[1;36m" SETCOLOR_WHITE="echo -en \E[1;37m" SETCOLOR_NORMAL="echo -en \E[0;39m" SETCOLOR_FLICKER="echo -en \E[5m" ##### 使用时直接调用颜色动作即可 $SETCOLOR_BLACK && echo BLACK $SETCOLOR_FAILURE && echo FAILURE $SETCOLOR_SUCCESS && echo SUCCESS $SETCOLOR_WARNING && echo WARNING $SETCOLOR_INFO && echo INFO $SETCOLOR_BUG && echo BUG $SETCOLOR_REMIND && echo REMIND $SETCOLOR_WHITE && echo WHITE $SETCOLOR_NORMAL && echo NORMAL $SETCOLOR_FLICKER && echo FLICKER $SETCOLOR_NORMAL && echo NORMAL ##### 其他测试 echo "输出内容,行末自带换行符"; echo -n "输出内容,取消行末换行符(内容输出后不换行)"; echo "这是接着前面的(没有新的行)"; echo -e "e[1;33;5m 闪烁文字 e[0m" # 倒计时(利用 来实现回到行首覆盖输出) for i in {1..100}; do echo -en " $i%"; sleep 1; done;
以上代码在Linux服务器上保存为 myDisplay.sh 文件,并赋予可执行权限。然后看到效果。
运行结果如图:
链接:https://www.cnblogs.com/xiongzaiqiren/p/16895162.html
全部0条评论
快来发表一下你的评论吧 !