在 Linux 終端中自定義 Bash 配色和提示內容
現今,大多數(如果不是全部的話)現代 Linux 發行版的默認 shell 都是 Bash。然而,你可能已經注意到這樣一個現象,在各個發行版中,其終端配色和提示內容都各不相同。
如果你一直都在考慮,或者隻是一時好奇,如何定製可以使 Bash 更好用。不管怎樣,請繼續讀下去 —— 本文將告訴你怎麼做。
PS1 Bash 環境變量
命令提示符和終端外觀是通過一個叫 PS1
的變量來進行管理的。根據 Bash 手冊頁說明,PS1 代表了 shell 準備好讀取命令時顯示的主體的提示字符串。
PS1 所允許的內容包括一些反斜杠轉義的特殊字符,可以查看手冊頁中 PRMPTING 部分的內容來了解它們的含義。
為了演示,讓我們先來顯示下我們係統中 PS1
的當前內容吧(這或許看上去和你們的有那麼點不同):
$ echo $PS1
[\u@\h \W]\$
現在,讓我們來了解一下怎樣自定義 PS1 吧,以滿足我們各自的需求。
自定義 PS1 格式
根據手冊頁 PROMPTING 章節的描述,下麵對各個特殊字符的含義作如下說明:
-
\u:
顯示當前用戶的 用戶名。 -
\h:
完全限定域名Fully-Qualified Domain Name(FQDN)中第一個點(.
)之前的主機名。 -
\W:
當前工作目錄的基本名,如果是位於$HOME
(家目錄)通常使用波浪符號簡化表示(~
)。 -
\$:
如果當前用戶是 root,顯示為#
,否則為$
。
例如,如果我們想要顯示當前命令的曆史數量,可以考慮添加 \!
;如果我們想要顯示 FQDN 全稱而不是短服務器名,那麼可以考慮添加 \H
。
在下麵的例子中,我們同時將這兩個特殊字符引入我們當前的環境中,命令如下:
PS1="[\u@\H \W \!]\$"
當按下回車鍵後,你將會看到提示內容會變成下麵這樣。可以對比執行命令修改前和修改後的提示內容:
自定義 Linux 終端提示符 PS1
現在,讓我們再深入一點,修改命令提示符中的用戶名和主機名 —— 同時修改文本和環境背景。
實際上,我們可以對提示符進行 3 個方麵的自定義:
文本格式 | 前景色(文本) | 背景色 |
---|---|---|
0: 常規文本 | 30: 黑色 | 40: 黑色 |
1: 加粗文本 | 31: 紅色 | 41: 紅色 |
4: 下劃線文本 | 32: 綠色 | 42: 綠色 |
33: 黃色 | 43: 黃色 | |
34: 藍色 | 44: 藍色 | |
35: 紫色 | 45: 紫色 | |
36: 青色 | 46: 青色 | |
37: 白色 | 47: 白色 |
我們將在開頭使用 \e
特殊字符,跟著顏色序列,在結尾使用 m
來表示結束。
在該序列中,三個值(背景,格式和前景)由分號分隔(如果不賦值,則假定為默認值)。
建議閱讀: 在 Linux 中學習 Bash shell 腳本。
此外,由於值的範圍不同,指定背景,格式,或者前景的先後順序沒有關係。
例如,下麵的 PS1
將導致提示符為黃色帶下劃線文本,並且背景為紅色:
PS1="\e[41;4;33m[\u@\h \W]$ "
修改 Linux 終端提示符配色 PS1
雖然它看起來那麼漂亮,但是這個自定義將隻會持續到當前用戶會話結束。如果你關閉終端,或者退出本次會話,所有修改都會丟失。
為了讓修改永久生效,你必須將下麵這行添加到 ~/.bashrc
或者 ~/.bash_profile
,這取決於你的版本。
PS1="\e[41;4;33m[\u@\h \W]$ "
盡情去玩耍吧,你可以嚐試任何色彩,直到找出最適合你的。
(LCTT 譯注:原文的這種設置,不但會影響到提示符,也會影響到輸入和顯示的其它文字,因此應該在 PS1 設置中使用 \e[0m
來結束顏色設置。如:PS1="\e[41;4;33m[\u@\h \W]$\e[0m "
)
原文發布時間為:2017-01-09
本文來自雲棲社區合作夥伴“Linux中國”
最後更新:2017-05-31 10:32:21