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

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

(0)

相关推荐

  • linux BASH shell下设置字体及背景颜色

    BASH shell下设置字体及背景颜色 echo -e "\e[31mtest\e[41m" \e[30m 将字符的显示颜色改为黑色 \e[31m 将字符的显示颜色改为红色 \e[32m 将字符的显示颜色改为绿色 \e[33m 将字符的显示颜色改为淡红色 \e[34m 将字符的显示颜色改为蓝色 \e[35m 将字符的显示颜色改为紫色 \e[36m 将字符的显示颜色改为淡蓝色 \e[37m 将字符的显示颜色改为灰色 \e[40m -- \e[47m 设置背景色 \e[40m 将背景色设

  • linux shell的输出效果修改方法(界面颜色)

    文本终端的颜色可以使用"ANSI非常规字符序列"来生成.举例: echo -e "\033[44;37;5m ME \033[0m COOL" 以上命令设置背景成为蓝色,前景白色,闪烁光标,输出字符"ME",然后重新设置屏幕到缺省设置,输出字符 "COOL"."e"是命令 echo 的一个可选项,它用于激活特殊字符的解析器."\033"引导非常规字符序列."m"意味着

  • shell脚本中echo显示内容带颜色的实现方法

    shell脚本中echo显示内容带颜色显示,echo显示带颜色,需要使用参数-e 格式如下: 复制代码 代码如下: echo -e "\033[字背景颜色:文字颜色m字符串\033[0m" 例如: 复制代码 代码如下: echo -e "\033[41;36m something here \033[0m" 其中41的位置代表底色, 36的位置是代表字的颜色 注: 1.字背景颜色和文字颜色之间是英文的"" 2.文字颜色后面有个m 3.字符串前后可

  • shell脚本函数:控制颜色、定位、居中显示的代码

    一.控制颜色 代码: 复制代码 代码如下: #!/bin/sh function colour (){  case $1 in    black_green)       echo -e '\033[40;32m' black_yellow)       echo -e '\033[40;33m' black_white)       echo -e '\033[40;37m' black_cyan)       echo -e '\033[40;36m' black_red)       ec

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

    在shell下提到终端的颜色的时候不得不提到几个提示符变量: PS1:默认提示符,也就是远程登上系统之后,打开终端,我们天天见到的那个熟悉的提示符: [root@vps ~]$echo $PS1[\u@\h \W]$ PS2:就是我们命令一行写不完在我们命令行下我们打上"\",另起一行所显示的那个: [root@vps ~]$echo "hello" \> "world"hello world[root@vps ~]$echo $PS1[\

  • C#中改变DataGridView控件边框颜色的方法

    DataGridView是Visual Studio中一个最重要的数据控件.它可以应用在大多数场合,功能强大,使用灵活.本文要重点介绍一下,如果设置DataGridView的边框颜色. 比尔盖次说"Apple机上没有哪一个软件我是觉得应该是微软首创的",这说明盖次对微软软件功能强大的自信心.而乔布斯而说,微软的软件毫无艺术感可言!这说明什么,说明微软的东西--丑! 乔帮主不愧是乔帮主,真是入木三分,直中要害!是的,默认情况下的DataGridView,真是丑!尤其是那个黑色的边框,不是

  • Android中App字体大小不随系统改变而改变

    在 "设置" , "显示" , "字体大小" 里面我们可以设置系统字体大小 App界面字体,如果被修改之后,可能就达不到理想状态的效果,界面布局就发生了变化. 未修改过的效果(测试机型:Nexus 5): 正常 小 超大 修改之后的效果(测试机型:Nexus 5): 正常 小 超大 我们从这两组对比图中可以直观的看到修改后的App字体大小不随系统改变而改变. 其实实现起来很简单,无需设置布局文件里面的 "textSize",只

  • Android中颜色选择器和改变字体颜色的实例教程

    1.构建一张七彩图: 我们经常看到这种样子的颜色选择器吧.. 然后其实右边的亮度选择是: 这样我们的代码就可以进行啦... // 创建七彩图片 private void init() { int[] oc = { 0xffff0000, 0xffffff00, 0xff00ff00, 0xff00ffff, 0xff0000ff, 0xffff00ff, 0xffff0000 }; float[] op = { 0, 0.16667f, 0.33333f, 0.5f, 0.66667f, 0.8

  • Perl中的特殊符号介绍

    $_   俗称perl的老地方,当你的程序中未告知使用哪个参数或者变量时,perl就会自动使用$_中的值,比如 for(1..10){ print ; } 这里print没有指定参数,所以它就会使用$_,那$_里面是什么呢?每次循环$_的值都会变化,所以$_实际上就是1 .. 10这10个值,所以上面的代码打印的结果就是12345678910 $! 当且仅当某个函数调用失败时才会设置该变量,所以经常这样使用这个变量 open FILE,"<d:/code/zdd.txt" or

  • Perl中的单行注释和多行注释语法

    同其他大多数编程语言一样,Perl中的单行注释也是#开头,例如: 复制代码 代码如下: #print "Hello,World!"; 但多行注释,不同的语言有不同的注释方式,比如说: Java,C/C++: 复制代码 代码如下: /*  *注释若干行  *注释若干行  *注释若干行 */ Python: 复制代码 代码如下: """  用三个双引号,多行注释  用三个双引号,多行注释  用三个双引号,多行注释 """ '''

  • Perl中的列表和数组学习笔记

    一.列表 列表是包含在括号里的一序列的值,可以为任何数值,也可为空,如:(1, 5.3 , "hello" , 2),空列表:(). 注:只含有一个数值的列表(如:(43.2) )与该数值本身(即:43.2 )是不同的,但它们可以互相转化或赋值.列表例: 复制代码 代码如下: (17, $var, "a string")     (17, 26 << 2)     (17, $var1 + $var2) ($value, "The answer

  • Perl中的文件读写学习笔记

    一.打开.关闭文件 语法为open (filevar, filename),其中filevar为文件句柄,或者说是程序中用来代表某文件的代号,filename为文件名,其路径可为相对路径,亦可为绝对路径. 复制代码 代码如下: open(FILE1,"file1");  open(FILE1, "/u/jqpublic/file1"); 打开文件时必须决定访问模式,在PERL中有三种访问模式:读.写和添加.后两种模式的区别在于写模式将原文件覆盖,原有内容丢失,形式为

  • Perl中的控制结构学习笔记

    一.条件判断 复制代码 代码如下: if ( ) {       }   elsif ( ) {       }   ...   else{       } 建立i f语句的另一种方法是使用多个表达式,然后根据哪个表达式是真,来运行代码:可以像下面这样来读取上面这个语句块:如果标号为e x p r e s s i o n 1的表达式是真,那么语句块B L O C K 1就运行.否则,控制权转给e l s i f,对e x p r e s s i o n 2进行测试,如果该表达式是真, 则运行B

随机推荐