在shell或者perl中改變字體或背景的顏色
在shell下提到終端的顏色的時(shí)候不得不提到幾個(gè)提示符變量:
PS1:默認(rèn)提示符,也就是遠(yuǎn)程登上系統(tǒng)之后,打開(kāi)終端,我們天天見(jiàn)到的那個(gè)熟悉的提示符;
[root@vps ~]$echo $PS1
[\u@\h \W]$
PS2:就是我們命令一行寫(xiě)不完在我們命令行下我們打上”\”,另起一行所顯示的那個(gè);
[root@vps ~]$echo “hello” \
> “world”
hello world
[root@vps ~]$echo $PS1
[\u@\h \W]$
PS3:就是我們?cè)趕hell腳本中要用select的時(shí)候顯示的那個(gè);
#!/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
#?
默認(rèn)是”#?”,呵呵,我們?cè)谀_本中改變一下
#!/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:我們調(diào)試shell腳本我們會(huì)bash -x myscripts.sh (或者在腳本中set -x)那個(gè)提示符;
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
就是那個(gè)”+”了,我們重置下;
[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
好了,回憶了一些基礎(chǔ)知識(shí)之后,回到我們的話(huà)題上來(lái):,我們以PS1為例說(shuō)明一下:
那這個(gè)變量是在哪里設(shè)置的呢?在我們目前的redhat(當(dāng)然包括centos了)是在/etc/bashrc文件中的:
[ "$PS1" = "\\s-\\v\\\$ " ] && PS1=”[\u@\h \W]\\$ ”
那這些\w \u 分別代表什么意思呢?分別如下:
\d :代表日期,格式為weekday month date,例如:”Mon Aug 1″
\H :完整的主機(jī)名稱(chēng)。例如:我的機(jī)器名稱(chēng)為:fc4.linux,則這個(gè)名稱(chēng)就是fc4.linux
\h :僅取主機(jī)的第一個(gè)名字,如上例,則為fc4,.linux則被省略
\t :顯示時(shí)間為24小時(shí)格式,如:HH:MM:SS
\T :顯示時(shí)間為12小時(shí)格式
\A :顯示時(shí)間為24小時(shí)格式:HH:MM
\u :當(dāng)前用戶(hù)的賬號(hào)名稱(chēng)
\v :BASH的版本信息
\w :完整的工作目錄名稱(chēng)。家目錄會(huì)以 ~代替
\W :利用basename取得工作目錄名稱(chēng),所以只會(huì)列出最后一個(gè)目錄
\# :下達(dá)的第幾個(gè)命令
\$ :提示字符,如果是root時(shí),提示符為:# ,普通用戶(hù)則為:$
我們可以自由的發(fā)揮我們的默認(rèn)提示符該是什么樣子了,下面不要偏離我們的主題,我們的主題是顏色;
那么它的語(yǔ)法是什么呢?
\e[ ——表示顏色的提示的起始位置
x;ym ——表示顏色的代碼。顏色的代碼在下面有說(shuō)明(當(dāng)然可以連著寫(xiě)多個(gè),之間用";"分開(kāi),比如 1;5;35m)
\e[m ——表示代顏色的提示的結(jié)束位置
x的取值為:
0 OFF
1 高亮顯示
4 underline
5 閃爍
7 反白顯示
8 不可見(jiàn)
y的取值:
前景 背景 顏色
---------------------------------------
30 40 黑色
31 41 紅色
32 42 綠色
33 43 黃色
34 44 藍(lán)色
35 45 紫紅色
36 46 青藍(lán)色
37 47 白色
語(yǔ)法說(shuō)明的都告訴你了,接下來(lái)就是你自由發(fā)揮了;
在腳本中如何使用,先來(lái)個(gè)例子再說(shuō);
好了,不過(guò)如果不想影響我們后面的顏色的話(huà),我們最好在關(guān)閉的時(shí)候這么寫(xiě):\e[0m
又閃爍又改變顏色的來(lái)一個(gè):
echo -e '\e[35;5;1mFor Example:\e[0m'
35是顏色,5代表閃爍,1代表前景色,當(dāng)中用“;”分開(kāi),順序倒是無(wú)所謂啦;\e 可以寫(xiě)成 \033;
那么在perl中呢?這個(gè)我們是借助Term::ANSIColor這個(gè)模塊的:
#!/usr/bin/perl
use strict;
use Term::ANSIColor;
print color 'bold red';
print "Hello word\n";
print color 'reset';

這樣寫(xiě)的話(huà)挺麻煩的,寫(xiě)個(gè)函數(shù)算了:
#!/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 ');
相關(guān)文章
linux下編譯boost.python簡(jiǎn)單方法
下面小編就為大家?guī)?lái)一篇linux下編譯boost.python簡(jiǎn)單方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-03-03
bash shell獲取當(dāng)前腳本的絕對(duì)路徑(pwd/readlink)
有時(shí)候,我們需要知道當(dāng)前執(zhí)行的輸出shell腳本的所在絕對(duì)路徑,本文主要介紹了bash shell獲取當(dāng)前腳本的絕對(duì)路徑,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02
shell在指定目錄下批量執(zhí)行sql腳本的實(shí)例
今天小編就為大家分享一篇shell在指定目錄下批量執(zhí)行sql腳本的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-06-06
Shell中實(shí)現(xiàn)“多線(xiàn)程”執(zhí)行腳本文件完美解決方案
這篇文章主要介紹了Shell中實(shí)現(xiàn)“多線(xiàn)程”執(zhí)行腳本文件完美解決方案,本文是針對(duì)一次調(diào)用執(zhí)行多個(gè)腳本文件并分批執(zhí)行的一個(gè)解決方法的測(cè)試和總結(jié),需要的朋友可以參考下2014-12-12
一個(gè)Shell小腳本精準(zhǔn)統(tǒng)計(jì)Mysql每張表的行數(shù)實(shí)現(xiàn)
這篇文章主要介紹了一個(gè)Shell小腳本精準(zhǔn)統(tǒng)計(jì)Mysql每張表的行數(shù)實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10
Shell自動(dòng)化配置SSH免密登錄和取消SSH免密配置腳本
本文主要介紹了Shell自動(dòng)化配置SSH免密登錄和取消SSH免密配置腳本,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07
Linux下使用Shell腳本實(shí)現(xiàn)進(jìn)程監(jiān)控的流程
這篇文章主要介紹了Linux下使用Shell腳本實(shí)現(xiàn)進(jìn)程監(jiān)控,在 Linux 平臺(tái)下,shell 腳本監(jiān)控是一個(gè)非常簡(jiǎn)單、方便的工具,它可以有效的對(duì)服務(wù)器、進(jìn)程進(jìn)行監(jiān)控,對(duì)系統(tǒng)開(kāi)發(fā)以及進(jìn)程維護(hù)人員非常有幫助,需要的朋友可以參考下2023-02-02

