在shell或者perl中改变字体或背景的颜色

2019-09-23 09:40:51王旭

w :完整的工作目录名称。家目录会以 ~代替
W :利用basename取得工作目录名称,所以只会列出最后一个目录
# :下达的第几个命令
$ :提示字符,如果是root时,提示符为:# ,普通用户则为:$
我们可以自由的发挥我们的默认提示符该是什么样子了,下面不要偏离我们的主题,我们的主题是颜色;




那么它的语法是什么呢?

e[ ——表示颜色的提示的起始位置
x;ym ——表示颜色的代码。颜色的代码在下面有说明(当然可以连着写多个,之间用";"分开,比如 1;5;35m)
e[m ——表示代颜色的提示的结束位置

x的取值为:

0 OFF
1 高亮显示
4 underline
5 闪烁
7 反白显示
8 不可见

y的取值:

前景 背景 颜色
---------------------------------------
30 40 黑色
31 41 紅色
32 42 綠色
33 43 黃色
34 44 藍色
35 45 紫紅色
36 46 青藍色
37 47 白色

语法说明的都告诉你了,接下来就是你自由发挥了;

在脚本中如何使用,先来个例子再说;



好了,不过如果不想影响我们后面的颜色的话,我们最好在关闭的时候这么写:e[0m



又闪烁又改变颜色的来一个:

echo -e 'e[35;5;1mFor Example:e[0m'

35是颜色,5代表闪烁,1代表前景色,当中用“;”分开,顺序倒是无所谓啦;e 可以写成 33;

那么在perl中呢?这个我们是借助Term::ANSIColor这个模块的:


#!/usr/bin/perl
use strict;
use Term::ANSIColor;
print color 'bold red';
print "Hello wordn";
print color 'reset';




这样写的话挺麻烦的,写个函数算了:


#!/usr/bin/perl
use strict;
use Term::ANSIColor;
sub ColorMessage{
my($colors,$messages) = @_;
print color "bold $colors";
print "$messages n";
print color 'reset';
}

ColorMessage('green','Hello word ');