這篇文章主要介紹了linux bash 提示符的一些騷操作,一些能讓你自定義 bash 提示符的黑科技,需要的朋友可以參考下
一些能讓你自定義 Bash 提示符的黑科技
當你在 linux 環境下打開一個 Shell 終端時,會看到命令行中出現了類似下面的一個 Bash 提示符:
[user@$host?~]$
你知道命令行提示符其實是可以自己設置添加許多非常有用的信息的嗎?在這篇文章中我就會教你如何自定義自己的 Bash 命令行提示符,想看的話就接著看吧~
如何設置 Bash 提示符
Bash 提示符是通過環境變量 PS1 () 來設置的,它用于交互式 shell 提示符。當然如果你需要更多的輸入才能完成一個 Bash 命令時,PS2 環境變量就是用來設置多行提示符的:
[dneary@dhcp-41-137?~]$?export?PS1="[Linux?Rulez]$?" [Linux?Rulez]?export?PS2="...?" [Linux?Rulez]?if?true;?then ...?echo?"Success!" ...?fi Success!
在哪里設置 PS1 的值?
PS1 就是一個普通的環境變量,系統默認值設置在 /etc/bashrc 中,在我的系統中,默認提示符通過以下命令來設置的:
[?"$PS1"?=?"s-v$?"?]?&&?PS1="[u@h?W]$?"
它判斷 PS1 是否是系統的默認值 s-$ ,如果是的話則將值設置為 [u@h W]$。(LCTT 譯注:注意命令中用 做了轉義。)
但如果你想要自定義提示符,不應該修改 /etc/bashrc ,而是應該在你的主目錄下將自定義命令加到 .bashrc 文件中。
上面提到的 u、h、W、s 和 是什么意思?
在 man bash 中的 PROMPTING 章節中,你能夠找到所有 PS1 和 PS2 相關的特殊字符的描述,以下是一些比較常用的:
-
u:用戶名
-
h:短主機名
-
W:當前你所在的目錄的名稱(basename),~ 表示你的主目錄
-
s:Shell 名字(bash 或者 sh,取決于你的 Shell 的名字是什么)
-
:Shell 的版本號
還有哪些特殊的字符串可以用在提示符當中
除了上面這些,還有很多有用的字符串可以用在提示符當中:
-
d:將日期擴展成 “Tue Jun 27” 這種格式
-
D{fmt}:允許自定義日期格式——可通過 man strftime 來獲得更多信息
-
D{%c}:獲得本地化的日期和時間
-
:換行(參考下面的多行提示符)
-
w:顯示當前工作目錄的完整路徑
-
H:當前工作機器的完整主機名
除了以上這些,你還可以在 Bash 的 man 頁面的 PROMPTING 部分找到更多的特殊字符和它的用處。
多行提示符
如果你的提示符過長(比如說你想包括 H 、w 或完整的日期時間時 ),想將提示符切成兩行,可以使用 將提示符切斷成兩行顯示,比如下面的多行的例子會在第一行顯示日期、時間和當前工作目錄,第二行顯示用戶名和主機名:
PS1="D{%c}?w [u@H]$?"
還能再好玩點嗎?
人們偶爾也想將提示符變成彩色的。雖然我覺得彩色提示符讓人分心、易怒,但是也許你很喜歡。如果我們想將日期變成紅色的,目錄變成青藍色,用戶名搞一個黃色背景,你可以這樣做:
PS1="[e[31m]D{%c}[e[0m] ???[e[36m]w[e[0m] [[e[1;43m]u[e[0m]@H]$?"
-
[..] :表示一些非打印字符
-
e[.. :轉義字符,后面的跟著的特定的轉義字符串在終端中表示顏色或者其他意思
-
31m :表示紅色字體(41m 表示是紅色背景)
-
36m :表示是青藍色字體
-
1;43m :表示黃色字體(1;33m 表示黃色字體)
-
[e[0m]] :它在最后將顏色恢復成系統終端默認顏色
你可以在 Bash prompt HOWTO 這里找到更多的顏色代碼,甚至可以讓字符反相和閃爍!我不知道為什么地球人會有這種想法,但是你可以這么干!
所以你最喜歡的自定義提示符是什么樣子的呢?有沒有讓你抓狂的自定義提示符呢?請在評論里告訴我吧~
(照片來源:ajmexico. 修改自 Jason Baker. CC BY-SA 2.0.)
作者簡介:
Dave Neary – Dave Neary 是紅帽開源和標準化團隊成員,幫助開源項目對紅帽的成功至關重要。自從在 1999 年為 GIMP 提交了第一個補丁以來,他一直帶著各種不同的帽子,在開源的世界徜徉。