在Linux終端中自定義Bash配色和提示內(nèi)容
現(xiàn)今,大多數(shù)(如果不是全部的話)現(xiàn)代 Linux 發(fā)行版的默認(rèn) shell 都是 Bash。然而,你可能已經(jīng)注意到這樣一個(gè)現(xiàn)象,在各個(gè)發(fā)行版中,其終端配色和提示內(nèi)容都各不相同。
如果你一直都在考慮,或者只是一時(shí)好奇,如何定制可以使 Bash 更好用。不管怎樣,請(qǐng)繼續(xù)讀下去 —— 本文將告訴你怎么做。
PS1 Bash 環(huán)境變量
命令提示符和終端外觀是通過一個(gè)叫 PS1 的變量來進(jìn)行管理的。根據(jù) Bash 手冊(cè)頁(yè)說明,PS1 代表了 shell 準(zhǔn)備好讀取命令時(shí)顯示的主體的提示字符串。
PS1 所允許的內(nèi)容包括一些反斜杠轉(zhuǎn)義的特殊字符,可以查看手冊(cè)頁(yè)中 PRMPTING 部分的內(nèi)容來了解它們的含義。
為了演示,讓我們先來顯示下我們系統(tǒng)中 PS1 的當(dāng)前內(nèi)容吧(這或許看上去和你們的有那么點(diǎn)不同):
- $ echo $PS1
- [\u@\h \W]\$
現(xiàn)在,讓我們來了解一下怎樣自定義 PS1 吧,以滿足我們各自的需求。
自定義 PS1 格式
根據(jù)手冊(cè)頁(yè) PROMPTING 章節(jié)的描述,下面對(duì)各個(gè)特殊字符的含義作如下說明:
- \u: 顯示當(dāng)前用戶的 用戶名。
- \h: 完全限定域名 Fully-Qualified Domain Name(FQDN)中第一個(gè)點(diǎn)(.)之前的主機(jī)名。
- \W: 當(dāng)前工作目錄的基本名,如果是位于 $HOME (家目錄)通常使用波浪符號(hào)簡(jiǎn)化表示(~)。
- \$: 如果當(dāng)前用戶是 root,顯示為 #,否則為 $。
例如,如果我們想要顯示當(dāng)前命令的歷史數(shù)量,可以考慮添加 \!;如果我們想要顯示 FQDN 全稱而不是短服務(wù)器名,那么可以考慮添加 \H。
在下面的例子中,我們同時(shí)將這兩個(gè)特殊字符引入我們當(dāng)前的環(huán)境中,命令如下:
- PS1="[\u@\H \W \!]\$"
當(dāng)按下回車鍵后,你將會(huì)看到提示內(nèi)容會(huì)變成下面這樣??梢詫?duì)比執(zhí)行命令修改前和修改后的提示內(nèi)容:
自定義 Linux 終端提示符 PS1
現(xiàn)在,讓我們?cè)偕钊胍稽c(diǎn),修改命令提示符中的用戶名和主機(jī)名 —— 同時(shí)修改文本和環(huán)境背景。
實(shí)際上,我們可以對(duì)提示符進(jìn)行 3 個(gè)方面的自定義:
文本格式 | 前景色(文本) | 背景色 |
---|---|---|
0: 常規(guī)文本 | 30: 黑色 | 40: 黑色 |
1: 加粗文本 | 31: 紅色 | 41: 紅色 |
4: 下劃線文本 | 32: 綠色 | 42: 綠色 |
33: 黃色 | 43: 黃色 | |
34: 藍(lán)色 | 44: 藍(lán)色 | |
35: 紫色 | 45: 紫色 | |
36: 青色 | 46: 青色 | |
37: 白色 | 47: 白色 |
我們將在開頭使用 \e 特殊字符,跟著顏色序列,在結(jié)尾使用 m 來表示結(jié)束。
在該序列中,三個(gè)值(背景,格式和前景)由分號(hào)分隔(如果不賦值,則假定為默認(rèn)值)。
建議閱讀: 在 Linux 中學(xué)習(xí) Bash shell 腳本。
此外,由于值的范圍不同,指定背景,格式,或者前景的先后順序沒有關(guān)系。
例如,下面的 PS1 將導(dǎo)致提示符為黃色帶下劃線文本,并且背景為紅色:
- PS1="\e[41;4;33m[\u@\h \W]$ "
修改 Linux 終端提示符配色 PS1
雖然它看起來那么漂亮,但是這個(gè)自定義將只會(huì)持續(xù)到當(dāng)前用戶會(huì)話結(jié)束。如果你關(guān)閉終端,或者退出本次會(huì)話,所有修改都會(huì)丟失。
為了讓修改永久生效,你必須將下面這行添加到 ~/.bashrc或者 ~/.bash_profile,這取決于你的版本。
- PS1="\e[41;4;33m[\u@\h \W]$ "
盡情去玩耍吧,你可以嘗試任何色彩,直到找出最適合你的。
(LCTT 譯注:原文的這種設(shè)置,不但會(huì)影響到提示符,也會(huì)影響到輸入和顯示的其它文字,因此應(yīng)該在 PS1 設(shè)置中使用 \e[0m 來結(jié)束顏色設(shè)置。如:PS1="\e[41;4;33m[\u@\h \W]$\e[0m ")
小結(jié)
在本文中,我們講述了如何來自定義 Bash 提示符的配色和提示內(nèi)容。如果你對(duì)本文還有什么問題或者建議,請(qǐng)?jiān)谙旅嬖u(píng)論框中寫下來吧。我們期待你們的聲音。
作者簡(jiǎn)介:
Aaron Kili 是一位 Linux 及 F.O.S.S 的狂熱愛好者,一位未來的 Linux 系統(tǒng)管理員,web 開發(fā)者,而當(dāng)前是 TechMint 的原創(chuàng)作者,他熱愛計(jì)算機(jī)工作,并且信奉知識(shí)分享。