在shell或者perl中改变字体或背景的颜色_linuxshell教程-查字典教程网
在shell或者perl中改变字体或背景的颜色
在shell或者perl中改变字体或背景的颜色
发布时间:2016-12-28 来源:查字典编辑
摘要:在shell下提到终端的颜色的时候不得不提到几个提示符变量:PS1:默认提示符,也就是远程登上系统之后,打开终端,我们天天见到的那个熟悉的提...

在shell下提到终端的颜色的时候不得不提到几个提示符变量:

PS1:默认提示符,也就是远程登上系统之后,打开终端,我们天天见到的那个熟悉的提示符;

[root@vps ~]$echo $PS1

[u@h W]$

PS2:就是我们命令一行写不完在我们命令行下我们打上””,另起一行所显示的那个;

[root@vps ~]$echo “hello”

> “world”

hello world

[root@vps ~]$echo $PS1

[u@h W]$

PS3:就是我们在shell脚本中要用select的时候显示的那个;

复制代码 代码如下:

#!/bin/bash

#PS3=”Select a script language (1-4): ”

select i in perl php python shell exit

do

case $i in

perl) echo “I like perl”;;

php) echo “php is good”;;

python) echo “xiangjun like python”;;

shell) echo “shell is my favourite”;;

exit) exit;;

esac

done

[root@vps tmp]$bash select.sh

1) perl

2) php

3) python

4) shell

5) exit

#? 1

I like perl

#?

默认是”#?”,呵呵,我们在脚本中改变一下

复制代码 代码如下:

#!/bin/bash

PS3=”Select a script language (1-4): “

select i in perl php python shell exit

do

case $i in

perl) echo “I like perl”;;

php) echo “php is good”;;

python) echo “xiangjun like python”;;

shell) echo “shell is my favourite”;;

exit) exit;;

esac

done

[root@vps tmp]$bash select.sh

1) perl

2) php

3) python

4) shell

5) exit

Select a script language (1-4): 3

xiangjun like python

Select a script language (1-4):

变了吧,哈哈。

PS4:我们调试shell脚本我们会bash -x myscripts.sh (或者在脚本中set -x)那个提示符;

复制代码 代码如下:

Select a script language (1-4): 5

[root@vps tmp]$bash -x select.sh

+ PS3='Select a script language (1-4): ‘

+ select i in perl php python shell exit

就是那个”+”了,我们重置下;

复制代码 代码如下:

[root@vps tmp]$export PS4=”>>”

[root@vps tmp]$bash -x select.sh

>>PS3='Select a script language (1-4): ‘

>>select i in perl php python shell exit

好了,回忆了一些基础知识之后,回到我们的话题上来:,我们以PS1为例说明一下:

那这个变量是在哪里设置的呢?在我们目前的redhat(当然包括centos了)是在/etc/bashrc文件中的:

[ "$PS1" = "s-v$ " ] && PS1=”[u@h W]$ ”

那这些w u 分别代表什么意思呢?分别如下:

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时,提示符为:# ,普通用户则为:$

我们可以自由的发挥我们的默认提示符该是什么样子了,下面不要偏离我们的主题,我们的主题是颜色;

那么它的语法是什么呢?

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 ');

相关阅读
推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  • 最新linuxshell学习
    热门linuxshell学习
    脚本专栏子分类