unix改变shell显示颜色
2014-04-29 00:50
330 查看
编写shell脚本的时候,通过改变shell的显示颜色,不但能够改变使用shell终端的体验,而且更为实用的是,能够通过改变显示内容的颜色来区分正常输出,warning和error等不同关注级别的输出内容。
1、转义序列(Escape sequence)
An escape sequence is a series of characters used to change the state of computers and their attached peripheral devices. These are also known as control sequences, reflecting
their use in device control. Some control sequences are special characters that always have the same meaning. Escape sequences use an escape character to change the meaning of the characters which follow it, meaning that the characters can be interpreted as
a command to be executed rather than as data.
简单地说,就是转义序列能够改变电脑和外设的状态。这里用的就是利用转义字符来改变显示器的显示颜色。
2、echo命令
echo命令中有-e选项,通过这个选项,可以在该条命令中开启对反斜杠转义的解释,后面的选项中追加适当的转义序列可以改变echo命令输出的显示颜色。echo中文字显示颜色相关的参数主要有三个Style,Frontground和Background,每个参数有7个值具体的格式如下:
通过将命令echo -e "\e[Style;Foreground;BackgroundmTHINGSTOPRINT"中的Style、Foreground和Background换成上面的数字就可以改变后面THINGSTOPRINT的显示颜色。比如,$ echo -e "\e[1;32;43mHello World! "的运行结果如图1。
图1
注:这里之所以Hello World!最后的叹号后面加一个空格,是因为unix shell中叹号是保留字符,用来调用历史命令。比如!cmd就执行上一条执行过的cmd开头的命令,而!cmd:p则是只是将上一条cmd开头的命令唤出显示出来,而不执行。
可以发现这样的话,后续所有行的shell显示颜色都会被改变,这往往不是我们想要的,所以一般来说,我们会在这种命令的末尾将这些显示设置给Reset。同时,为了不被上一次命令影响,也会在之前设置style的值来进行开始设置之前的reset。(当然,如果要将style设置成underline或者FGorBG Bright之类的值得时候,就没法在开始设置之前进行reset了,但是,最后的reset是无论如何都是必要的,除非你想接下来所有的显示一直采用当前的设置。)下面几条命令的运行结果如下图2。
命令:
图2 运行结果
3、打印所有显示效果的脚本
注:这里改脚本中用到了echo的-n选项,它的作用就是控制不要再输出内容的后面追加换行,与之对应的只有一个echo的命令就是简单地输出一个空行,达到换行的目的。
sh test.sh运行该脚本,就可以看到彩虹般的结果,如图3(结果有点长,这里只截取了一部分)。
图3 彩虹
1、转义序列(Escape sequence)
An escape sequence is a series of characters used to change the state of computers and their attached peripheral devices. These are also known as control sequences, reflecting
their use in device control. Some control sequences are special characters that always have the same meaning. Escape sequences use an escape character to change the meaning of the characters which follow it, meaning that the characters can be interpreted as
a command to be executed rather than as data.
简单地说,就是转义序列能够改变电脑和外设的状态。这里用的就是利用转义字符来改变显示器的显示颜色。
2、echo命令
echo命令中有-e选项,通过这个选项,可以在该条命令中开启对反斜杠转义的解释,后面的选项中追加适当的转义序列可以改变echo命令输出的显示颜色。echo中文字显示颜色相关的参数主要有三个Style,Frontground和Background,每个参数有7个值具体的格式如下:
Style Foreground Background 1st Digit 2nd Digit 3rd Digit 0 - Reset 30 - Black 40 - Black 1 - FG Bright 31 - Red 41 - Red 2 - Unknown 32 - Green 42 - Green 3 - Unknown 33 - Yellow 43 - Yellow 4 - Underline 34 - Blue 44 - Blue 5 - BG Bright 35 - Magenta 45 - Magenta(洋红色) 6 - Unknown 36 - Cyan 46 - Cyan(蓝绿色) 7 - Reverse 37 - White 47 - White
通过将命令echo -e "\e[Style;Foreground;BackgroundmTHINGSTOPRINT"中的Style、Foreground和Background换成上面的数字就可以改变后面THINGSTOPRINT的显示颜色。比如,$ echo -e "\e[1;32;43mHello World! "的运行结果如图1。
图1
注:这里之所以Hello World!最后的叹号后面加一个空格,是因为unix shell中叹号是保留字符,用来调用历史命令。比如!cmd就执行上一条执行过的cmd开头的命令,而!cmd:p则是只是将上一条cmd开头的命令唤出显示出来,而不执行。
可以发现这样的话,后续所有行的shell显示颜色都会被改变,这往往不是我们想要的,所以一般来说,我们会在这种命令的末尾将这些显示设置给Reset。同时,为了不被上一次命令影响,也会在之前设置style的值来进行开始设置之前的reset。(当然,如果要将style设置成underline或者FGorBG Bright之类的值得时候,就没法在开始设置之前进行reset了,但是,最后的reset是无论如何都是必要的,除非你想接下来所有的显示一直采用当前的设置。)下面几条命令的运行结果如下图2。
命令:
echo -e "\e[1;32;43mHello World! \e[0m" echo -e "\e[0;32;43mHello World! \e[0m" echo -e "\e[4;32;43mHello World! \e[0m" echo -e "\e[5;32;43mHello World! \e[0m"
图2 运行结果
3、打印所有显示效果的脚本
脚本test.sh的内容: #/bin/bash for TYLE in 0 1 2 3 4 5 6 7; do for FG in 30 31 32 33 34 35 36 37; do for BG in 40 41 42 43 44 45 46 47; do CTRL="\033[${STYLE};${FG};${BG}m" echo -en "${CTRL}" echo -n "${STYLE};${FG};${BG}" echo -en "\033[0m" done echo done echo done #Reset echo -e "\033[0m"
注:这里改脚本中用到了echo的-n选项,它的作用就是控制不要再输出内容的后面追加换行,与之对应的只有一个echo的命令就是简单地输出一个空行,达到换行的目的。
sh test.sh运行该脚本,就可以看到彩虹般的结果,如图3(结果有点长,这里只截取了一部分)。
图3 彩虹
相关文章推荐
- unix改变shell显示颜色
- 改变PS1颜色,以及在shell中显示调整文字的颜色
- Linux的shell中echo改变输出显示样式/输出带颜色的文本
- 如何改变Win32 Console 程序显示颜色
- EditText 使用细节(输入内容改变时的监听事件、透明背景、修改提示文字颜色、输入内容密文显示)
- shell脚本函数:控制颜色、定位、居中显示的代码
- shell中的颜色显示
- shell脚本中echo显示内容带颜色显示
- android toolbar 显示返回按钮并改变按钮颜色
- Shell 显示带颜色字体
- C# javascript 查找字体突出显示(改变大小、颜色)
- 孙鑫视频教程第十课——图形的绘制、颜色对话框、字体对话框、改变控件的字体及颜色、在对话框中显示位图
- shell练习:函数实现接受参数,查询用户输入的用户情况(带颜色显示)
- int 9中断例程-;在屏幕中间依次显示'a'~'z',并可以让人看清。 在显示的过程中,按下Esc键后,改变显示的颜色
- 改变Mac终端(Terminal)背景及命令的显示颜色
- shell输入显示带颜色字体的模块脚本
- 安装一个新的int 9中断例程【在DOS下,按Tab建后改变当前屏幕的显示颜色,其它键照常处理】
- python shell中python os模块实用函数(含改变当前工作路径、显示当前目录等)
- DataGrid基础,添加DropDownList,改变单击行的颜色,隐藏显示列
- 安装新的nt9中断 动态 显示26字母,"ESC"改变颜色