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

所属分类: 脚本专栏 / linux shell 阅读数: 714
收藏 0 赞 0 分享

在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 可以写成 \033;

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

复制代码 代码如下:

#!/usr/bin/perl
use strict;
use Term::ANSIColor;
print color 'bold red';
print "Hello word\n";
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 ');


更多精彩内容其他人还在看

Linux shell中的printf的详细用法

这篇文章主要介绍了Linux shell中的printf的详细用法的相关资料,希望能通过本文能帮助到大家,需要的朋友可以参考下
收藏 0 赞 0 分享

shell字符截取命令之cut命令的实例详解

这篇文章主要介绍了shell字符截取命令之cut命令的实例详解的相关资料,希望通过本文大家能够掌握这部分内容,需要的朋友可以参考下
收藏 0 赞 0 分享

Linux 在Bash脚本中怎么关闭文件描述符的实例

这篇文章主要介绍了Linux 在Bash脚本中怎么关闭文件描述符的实例的相关资料,希望通过本文能帮助到大家实现这样的功能,需要的朋友可以参考下
收藏 0 赞 0 分享

Linux使用文本编辑器vi常用命令

vi就是一种功能强大的文本编辑器,而vim则是高级版的vi,不但可以用不同颜色显示文字内容,还能进行诸如shell脚本、C语言程序编辑等功能,可以作为程序编辑器。下面通过本文给大家介绍linux 文本编辑器vi常用命令,一起看看吧
收藏 0 赞 0 分享

Linux 中unzip解压时中文乱码的解决办法

这篇文章主要介绍了Linux 中unzip解压时中文乱码的解决办法的相关资料,这里提供两种解决办法,希望能通过本文帮助到大家,需要的朋友可以参考下
收藏 0 赞 0 分享

Linux shell ftp命令根据文件日期下载文件的方法

最近做项目遇到这样的需求要求ftp获取远程数据的文件,根据文件的创建时间点下载文件。下面小编给大家分享知识点小结,感兴趣的朋友要求看看吧
收藏 0 赞 0 分享

Linux下服务器重启的脚本命令

Linux关闭和重启系统一般使用相同的命令可以实现。下面脚本之家小编给大家带来了Linux下服务器重启的脚本命令,感兴趣的朋友一起看看吧
收藏 0 赞 0 分享

Linux中的特殊符号与正则表达式

这篇文章主要介绍了Linux中的特殊符号与正则表达式,需要的朋友可以参考下
收藏 0 赞 0 分享

利用shell命令统计日志的方法详解

这篇文章主要给大家介绍了关于利用shell命令统计日志的方法,通过这个命令将会对大家的学习或者工作具有一定的参考学习价值,文中给出了详细的示例代码,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧。
收藏 0 赞 0 分享

Linux中的Syslog命令

syslog是Linux系统默认的日志守护进程,默认的syslog配置文件是/etc/syslog.conf文件。接下来通过本文给大家分享Linux中的Syslog命令,感兴趣的朋友一起看看吧
收藏 0 赞 0 分享
查看更多