Linux學習——自定義shell終端提示符

轉自:herehtml

我使用的Linux發行版是LinuxMint 17.2 Rafaela,默認狀況下Terminal中的shell提示包括了用戶名、主機名、當前目錄(絕對路徑)和提示符。這樣會致使當進入一個比較深的目錄時,提示符太長(以下圖所示),操做起來就不太方便了。shell

 

 咱們能夠自定義Linux系統終端提示符。Linux系統終端提示符的特徵由系統環境變量PS1(是「prompt string one」 的簡寫)定義。經過命令echo $PS1查看當前設置。從上圖能夠看到個人Linux機器上該環境變量PS1的值。下面咱們經過改變環境變量PS1的值來將shell提示符設置得更加清爽點。bash

1.基本轉義字符

PS1的值由一系列靜態文本或\和轉義字符序列組成,如:併發

 $ PS1=」\u@\H \w$ 」

 表1: Shell 提示符中用到的轉義字符學習

序列字體

顯示值編碼

\acode

以 ASCII 格式編碼的鈴聲 . 當遇到這個轉義序列時,計算機會發出嗡嗡的響聲。htm

\dblog

以日,月,天格式來表示當前日期。例如,「Mon May 26」

\h

本地機的主機名,但不帶末尾的域名。

\H

完整的主機名。

\j

運行在當前 shell 會話中的工做數。

\l

當前終端設備名。

\n

一個換行符。

\r

一個回車符。

\s

shell 程序名。

\t

以24小時制,hours:minutes:seconds 的格式表示當前時間.

\T

以12小時製表示當前時間。 

\@

以12小時制,AM/PM 格式來表示當前時間,例如「10:51 PM」。

\A

以24小時制,hours:minutes 格式表示當前時間。

\u

當前用戶名。

\v

shell 程序的版本號,例如4.3。

\V

shell 程序的版本號,例如4.3.11。

\w

當前工做目錄名。

\W

當前工做目錄名的最後部分。

\!

當前命令的歷史號。 

\#

當前 shell 會話中的命令數。 

\$

這會顯示一個"$"字符,除非你擁有超級用戶權限。在那種狀況下, 它會顯示一個"#"字符。

\[

標誌着一系列一個或多個非打印字符的開始。這被用來嵌入非打印的控制字符,這些字符以某種方式來操做終端仿真器,比方說移動光標或者是更改文本顏色。 

\]

標誌着非打印字符序列結束。 

例如我如今想讓提示符顯示格式爲:「<用戶名>@<當前目錄名> $ 」,則

$ PS1=」\u@\W\$ 」

效果以下所示,

上面可以知足咱們的效果了,可是相對於LinuxMint原始的提示符,缺乏了顏色,不太美觀。下面咱們來學習如何添加顏色。大多數終端仿真器程序支持必定的非打印字符序列來控制,比方說字符屬性(像顏色,黑體和可怕的閃爍) 和光標位置。

2.字體顏色

字體顏色是由一個ANSI 轉義編碼來控制的。該控制編碼會嵌入字符流中併發送給終端仿真器。可是,該控制編碼不會被「打印」到屏幕上,而是會被終端解釋爲一個指令。正如咱們在上表看到的字符序列, 這個 \[ 和 \] 序列被用來封裝這些非打印字符。一個 ANSI 轉義編碼以一個八進制033(這個編碼是由 退出按鍵產生的)開頭,其後跟着一個可選的字符屬性(0:正常、1:黑體、4:下劃線、5:閃爍、7:反向(前景色和背景色反轉)),在以後是一個指令。

表14-2: 用轉義序列來設置文本顏色

序列

文本顏色

序列

文本顏色

\033[0;30m

黑色

\033[1;30m 

深灰色

\033[0;31m

紅色

\033[1;31m 

淺紅色

\033[0;32m 

綠色

\033[1;32m 

淺綠色

\033[0;33m 

棕色

\033[1;33m 

黃色

\033[0;34m 

藍色

\033[1;34m 

淺藍色

\033[0;35m 

粉紅

\033[1;35m 

淺粉色

\033[0;36m 

青色

\033[1;36m 

淺青色

\033[0;37m 

淺灰色

\033[1;37m 

白色

 例如咱們來設置一個同LinuxMint默認的綠色提示符,

$ PS1="\[\033[01;32m\]\u@\W\$\[\033[00m\] "

因而,咱們便有了下面的效果。

上面跟設置的提示符格式中的最後那個」\[\033[00m\]」是用於將後續的字符顏色還原回原來的顏色。若是沒有沒有加最後這個轉義碼,則會出現下面結果(咱們本身手工輸入的命令也都將是綠色的)。

 3.背景顏色

除了字體顏色,咱們也能夠設置字體的背景顏色。一樣是經過轉義的控制編碼來實現,下表是背景顏色的控制編碼。

表3: 用轉義序列來設置背景顏色

\033[0;40m 

黑色

\033[1;44m 

藍色

\033[0;41m 

紅色

\033[1;45m 

粉紅

\033[0;42m 

綠色

\033[1;46m 

青色

\033[0;43m 

棕色

\033[1;47m 

淺灰色

4.移動光標:

轉義編碼也能夠用來定位光標。這些編碼一般被用來,每次當提示符出現的時候,會在屏幕的不一樣位置,好比說上面一個角落,顯示一個時鐘或者其它一些信息。下表是一系列用來定位光標的轉義編碼:

表14-4: 光標移動轉義序列

轉義編碼

行動

\033[l;cH 

把光標移到第 l 行,第 c 列。

\033[nA 

把光標向上移動 n 行。

\033[nB 

把光標向下移動 n 行。

\033[nC 

把光標向前移動 n 個字符。

\033[nD 

把光標向後移動 n 個字符。

\033[2J 

清空屏幕,把光標移到左上角(第零行,第零列)。

\033[K 

清空從光標位置到當前行末的內容。

\033[s 

存儲當前光標位置。

\033[u 

喚醒以前存儲的光標位置。

5.保存提示符

咱們在當前打開的Terminal中設置環境變量PS1的值來自定義的終端提示符,只在當前Terminal中有效,打開新的Terminal就會採用系統默認的提示符了。咱們當讓不但願每次打開Terminal的時候都要從新設置一次SP1環境變量。

~/.bashrc文件會在每次打開一個Terminal以前會被執行一次。因而,咱們能夠將設置環境變量SP1的命令放到該文件中,便不須要每次都手工再設置一次SP1的值。因而,咱們在~/.bashrc配置文件末尾加入下面兩行內容,

PS1="\[\033[01;32m\]\u@\W\$\[\033[00m\] "
export PS1

因而,每次打開Terminal便都會有以下提示符效果,

6.示例

(1)格式:「<用戶名>@<當前目錄名>$」

$ PS1="\u@\W\$ "

效果以下:

(2)添加下劃線:

$ PS1="\[\033[4;37m\]\u@\W\$\[\033[00m\] "

效果以下:

(3)前景色爲綠色:

$ PS1="\[\033[0;32m\]\u@\W\$\[\033[00m\] "

效果以下:

(4)前景色爲綠色,背景色爲紅色:

$ PS1="\[\033[0;41m\033[1;32m\]\u@\W\$\[\033[00m\] "

效果以下:

 

(5)設置一個超級複雜的,經過移動光標來設置一個每次顯示提示符的時候都在當前Terminal的第一行顯示當前時間。

$ PS1='\[\033[s\033[0;0H\033[0;41m\033[K\033[1;33m\t\033[0m\033[u\033[1;32m\]\u@\W\$ \[\033[00m\] '

效果以下:

 

相關文章
相關標籤/搜索