echo -e "\033[32;49;1m [DONE] \033[39;49;0m"或echo -e "\e[32;49;1m [DONE] \033[39;49;0m"
输出结果 :[DONE]
文本终端的颜色可以使用“ANSI非常规字符序列”来生成。举例:
echo -e "\033[44;37;5m ME \033[0m COOL"
以上命令设置背景成为蓝色,前景白色,闪烁光标,输出字符“ME”,然后重新设置屏幕到缺省设置,输出字符 “COOL”。“e”是命令 echo 的一个可选项,它用于激活特殊字符的解析器。“\033”引导非常规字符序列。“m”意味着设置属性然后结束非常规字符序列,这个例子里真正有效的字符是 “44;37;5” 和“0”。
修改“44;37;5”可以生成不同颜色的组合,数值和编码的前后顺序没有关系。可以选择的编码如下所示:
编码 颜色/动作
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
控制选项说明 :
\33[0m 关闭所有属性
\33[1m 设置高亮度
\33[4m 下划线
\33[5m 闪烁
\33[7m 反显
\33[8m 消隐
\33[30m -- \33[37m 设置前景色
\33[40m -- \33[47m 设置背景色
\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 显示光标
有些时候,需要为Linux服务的配置截个图,然后打印出来,结果在字符界面下就只有黑色背景,白色字体,打印出来费墨~~改改背景可能好点。
首先要知道在linux中,一些常用的颜色代码:(这些颜色是ANSI标准颜色)
前景色:30黑 31红 32绿 33黄 34蓝 35紫 36青 37白
背景色:40黑 41红 42绿 43黄 44青 45蓝 46青 47白
前景颜色各数字是对应背景颜色减去10.
命令: echo -e "\033[background_number;foreground_numberm"
如设置白色背景黑色前景字体应该是 echo -e "\033[47;30m"
background_number=背景色
foreground_number=前景色
m要紧跟foreground_number,没有空格。
(说是白色背景,黑色字体。字体颜色我同意,可背景色咋看也不像是白色呀?o(∩_∩)o...)
\033 即退出键<esc>的ascii码(27),所以上面的命令也可写成如下形式
echo "^[[47;30m" 其中的“^[”是先按ctrl-V,然后再按<esc>键(就是键盘左上角的键)产生的。
这种方法只能暂时改变一下,logout一下就没有了。不过可以vi /root/.bashrc, 在后面加上刚才的命令。
echo -e '\033[47;30m'
用的是终端控制字符,比如这个,就是光标跳到第60列,然后显示一个OK
echo -en '\033[60G ' && echo OK
\033[就是终端转义字符开始,60G是命令。
echo的-e选项就是让echo不自己处理终端转义字符
内建命令echo 输出他的参数,以空格来分隔,以换行符来结束。返回值总为0。echo 使用的一
些选项:
-e:转义反斜杠字符。
-n:禁止换行。
echo 命令使用的转义序列
序列 意义
\a 闹铃
\b 退格
\c 强制换行
\e 退出
\f 清除屏幕
\n 新行
\r Carriage return.
\t 水平制表符
\v 垂直制表符
\ 反斜杠
$#传递到脚本的参数个数
$*传递到脚本的参数,与位置变量不同,此选项参数可超过9个
$$脚本运行时当前进程ID号,常用作临时变量的后缀。如hash.$$
$!后台运行的&最后一个进程的ID号
$@与$#相同,使用时加引号,并在引号中返回参数的个数
$-上一个命令的最后一个参数
$?最后命令的推出状态,0表示没有错误。其他任何值表示有错误。
一、 锁\开键盘代码
代码定义:
锁键盘:ESC[2h
开键盘:ESC[2l
应用:
1.直接在键盘上顺序敲入Esc+[+2+h四键,键盘即被锁住。
2.在C语言程序显示字符串中包含锁代码:printf(″%c[2h字串″,'\033')。
3.在shell程序中用echo命令:echo″[[2h字串″.注Esc键在vi编辑器中输入方法为:Ctrl+v,然后按一下Esc键,在屏幕上显示[表示已输入。
同样显示开锁代码则键盘被解锁。
二、 删除字符代码
代码定义:
ESC[nX:清除光标右边n个字符,光标不动。
ESC[K或ESC[OK;清除光标右边全部字符,光标不动。
ESC[1K:清除光标左边全部字符,光标不动。
ESC[2K:清除整行,光标不动。
ESC[J或ESC[OJ:清除光标右下屏所有字符,光标不动。
ESC[1J:清除光标左上屏所有字符,光标不动。
ESC[2J或ESCc:清屏,光标移到左上角。
ESC[nM:删除光标之下n行,剩下行往上移,光标不动。
ESC[nP:删除光标右边n个字符,剩下部分左移,光标不动。
应用:
一般用于自己开发的编辑器中或涉及行编辑的应用程序中。
三、 插入字符代码
代码定义:
ESC[n@:在当前光标处插入n个字符。
ESC[nL:在当前光标下插入n行。
应用:
一般用于自己开发的编辑器中或涉及行编辑的应用程序中。
四、 移动光标
代码定义:
ESC[nA:光标上移n行。
ESC[nB:光标下移n行。
ESC[nC:光标右移n个字符。
ESC[nD:光标左移n个字符。
ESC[n;mH :光标定位到第n行m列(类似代码ESC[n;mf)。
应用:
1.一般用于自己开发的编辑器中或涉及行编辑的应用程序中。
2.用shell编辑的菜单程序中定位光标,如:
echo″^[[10;30H请选择:[ ]^[[9C\c″,则先把光标定位到10行30列,然后显示″请选择[ ]″,最后光标右移9个符定位到中括号内等待用户响应。
五、 定义字符显示属性代码
代码定义:
ESC[p;p;p;……m 其中属性值p可以是一个或多个,具体定义如下:
p 含义
0 清除所有属性
1 高亮度显示
4 下划线(如果硬件支持的话)
5 闪烁(如果硬件支持的话)
25 无闪烁
7 反场(前背景交换)
27 无反场
8 隐藏(不显示)
10 选择基本字体
11 选择第一替代字体;让ASCII值小于32的字符显示时直接取自ROM芯片内
12 选择第二替代字体;在作为ROM字符显示之前先压缩扩展高位ASCII码值
30 前景黑色
31 前景红色
32 前景绿色
33 前景褐色
34 前景蓝色
35 前景紫色
36 前景蓝绿色
37 前景白色
38 开启下划线标志;白色前景用白色下划线
39 关闭下划线标志
40 背景黑色
41 背景红色
42 背景绿色
43 背景褐色
44 背景蓝色
45 背景紫色
46 背景蓝绿色
47 背景白色
应用:
unix系统提供的setcolor命令是以行为单位改变颜色,在实际运用中有它的局限性,上面提到的控制代码在日常生活中用得最多,尤其适合于彩色弹出式立体菜单的设计。如我设计的中心机房值班程序,由于用了这些控制代码,界面非常友好。
六、其它代码
代码定义:
ESC7:保存当前光标位置参数及字符属性。
ESC8:恢复保存的光标位置参数及字符属性。
\n :插入换行符
\t :插入一个Tab键。
\r :插入回车符。
^G :插入响铃符(pc嗽叭鸣叫一次),在vi中按Ctrl+g即可输入。
\c :用于shell程序中,不换行。
应用:
1.用户界面设计。
2.用于中心机房向储蓄柜面发通知的程序中(结合实达终端屏幕保存代码ESC[/n;mr__保存从n行到m行的内容,恢复代码ESC[/11)
七、应用举例
1.彩色立体菜单(shell语言):
setcolor-b white
clear
while true
do
echo″
[[8;20H[[34;43m┍—————————┒^[[47m
[[9;20H[[34;43m | 1 日 间 业 务 | ^[[40m ^[[47m
[[10;20H[[34;43m| 2 环 境 维 护 | ^[[40m ^[[47m
[[11;20H[[34;43m| 请 选 择 [ ]| [[40m[[47m
[[12;20H[[34;43m┕ ┛[[40m[[47m
[[13;22H[[40m ^[[47m
echo″ ^[[11;40H\c″
read acc
done
2.向储蓄所发通知(C语言):
#include<stdio.h>;
main()
{
printf(″%c7%c[/2;4r″,'\033',\033');
printf(″%c[2;5H%c[2K 紧急通知 ″,' \033','\033');
printf(″%c[3;5H%c[2K由于线路问题,今天不办新余市通存通兑业务“,’[033’,’\033’);
printf(″%c[4;5H%c[2K 中心机房 1998.11.20%c8″,'\033','033','\033');
fflush(stdout);
sleep(10);
printf “%c[/11″,’\033’);
fflush(stdout);
}
说明:该程序首先保存光标位置,同时保存2至4行内容 ,接着定位光标到2行5列,清除该行原先内容,然后显示“紧急通知”字样,通知显示完后立即恢复光标位置,然后等待10秒钟后恢复屏幕原先内容 。