改變linux終端顏色


對於兼容ANSI的終端,如xterm、rxvt、konsole等,可以彩色顯示終端文本中的底色或前景顏色,本文將詳細討論如何實現隨意修改和定制這些終端的顏色。

每個Linux用戶幾乎天天都會面對Bash,剛接觸Linux的人總是感覺Bash過於沉悶單調,但是實際上每個用戶都可以根據需要定制出自己喜歡的Shell,使它變得豐富多彩。例如,彩色提示符就可以使終端更酷,並且與眾不同。

由於Linux中使用最廣泛的Shell就是Bash,因此我們在這里主要討論Bash,希望在其它不同Shell中定制色彩的可以參考Man。

配置Shell

設置顏色可以在Linux用戶個人的Shell配置文件~/.bashrc中完成,或者在全局配置文件/etc/bashrc中實現。這時候所有用戶都 會擁有一個一樣的登錄彩色Shell,其中提示符設置是由bashrc文件中的PS1變量來控制的,例如可能是如下的格式:

~/.bashrc: PS1="s-v$ "

這里"s"表示Shell的名字,"v"表示Shell的版本號,在最后提示添加一個"$"美元符號。這樣,當該用戶登陸以后,得到的提示符就如下所示:
-bash-2.05b$

由於這樣的提示符並不能提供足夠的有意義信息,例如當前所在目錄等,因此在絕大多數Linux發布中,提示符往往被設置為如下所示:

~/.bashrc: PS1="[u@h W $] "

這就是我們熟悉的[username@hostname current_dir $]的提示符模式。

轉義序列符

為了添加個人風格的彩色提示符,我們需要使用轉義序列符。一個轉義序列符是一個控制命令,它控制Shell執行某個特定的動作。一 個轉義序列符通常以 ESC開始,在Shell中被記錄為"^[",有時候也被常常記錄為3(因為ESC在ASCII編碼中是27,八進制就被記錄為033)。為了直接在 Shell中輸入一個轉義序列符,一般會以“Ctrl+V”作為前導,也就是“Ctrl-v ESC”。

使用Shell顏色

首先使用一個例子來說明如何實現Shell彩色:

PS1="[ 3[0;32;40mu@h:w$ 3[0m ]"


這時候就會顯示如下的提示符:


在上面命令中,“3[0;32;40m”表示定義后面文本的顏色,“3”表示啟動一個轉義序列,“[”定義開始顏色定義,“0”定義默認的字體顏色,其 它部分稍后定義。“32”定義文本的前景色,這里32表示綠色;“40”定義文本的背景色,40表示黑色。在字符串的最后定義了“ 3[0m”,它是用來恢復了默認的文本顏色設置,這樣就只會得到一個彩色提示符,而不會影響命令和其輸出的顏色顯示(即黑底白字)。


我們一共有8種字體顏色可供選擇,它們分別是30 (黑色)、31 (紅色)、32 (綠色)、33 (黃色)、34 (藍色)、35 ( 紫紅色)、36 (青色)和37 (白色)。對於底色也有8種顏色可供選擇,只需要將字體顏色的3修改為4即可,例如40、41、42、43、44、45、46、47。


例如,運行下面命令:

~/.bashrc: PS1="[3[0;37;44mu@3[0;32;43mh:3[0;33;41mw$3[0m]"


或者

PS1="[3[1;34;40m[3[1;31;40mu@h:w3[1;34;40m]3[1;37;40m $3[0;37;0m] "


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

代碼 意義
-------------------------
0 OFF
1 高亮顯示
4 underline
5 閃爍
7 反白顯示
8 不可見



#!/bin/sh

############################################################

# Nico Golde Homepage: http://www.ngolde.de

# Last change: Mon Feb 16 16:24:41 CET 2004

############################################################


for attr in 0 1 4 5 7 ; do

echo "----------------------------------------------------------------"

printf "ESC[%s;Foreground;Background - " $attr

for fore in 30 31 32 33 34 35 36 37; do

for back in 40 41 42 43 44 45 46 47; do

printf '3[%s;%s;%sm %02s;%02s ' $attr $fore $back $fore $back

done

printf ' '

done

printf '3[0m'

done


在Shell環境下設置顏色的能力,不僅僅能夠使得Shell提示符看上去更豐富多彩和吸引人,而且能有助於幫助基於console的Linux程序的互動性和趣味性。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM