天天看點

Linux Bash 提示符的一些騷操作

當你在 Linux 環境下打開一個 Shell 終端時,會看到指令行中出現了類似下面的一個 Bash 提示符:

[user@

1

[user@$host ~]$

你知道指令行提示符其實是可以自己設定添加許多非常有用的資訊的嗎?在這篇文章中我就會教你如何自定義自己的 Bash 指令行提示符,想看的話就接着看吧~

Bash 提示符是通過環境變量 <code>PS1</code> (提示符字元串 1Prompt String 1) 來設定的,它用于互動式 shell 提示符。當然如果你需要更多的輸入才能完成一個 Bash 指令時,<code>PS2</code> 環境變量就是用來設定多行提示符的:

[dneary@dhcp-41-137 ~]$ export PS1="[Linux Rulez]$ " [Linux Rulez] export PS2="... " [Linux Rulez] if true; then ... echo "Success!" ... fi Success!

2

3

4

5

6

[dneary@dhcp-41-137 ~]$ export PS1="[Linux Rulez]$ "

[Linux Rulez] export PS2="... "

[Linux Rulez] if true; then

... echo "Success!"

... fi

Success!

<code>PS1</code> 就是一個普通的環境變量,系統預設值設定在 <code>/etc/bashrc</code> 中,在我的系統中,預設提示符通過以下指令來設定的:

[ "$PS1" = "\\s-\\v\\\$ " ] &amp;&amp; PS1="[\u@\h \W]\\$ "

[ "$PS1" = "\\s-\\v\\\$ " ] &amp;&amp; PS1="[\u@\h \W]\\$ "

它判斷 <code>PS1</code> 是否是系統的預設值 <code>\s-\v$</code> ,如果是的話則将值設定為 <code>[\u@\h \W]\$</code>。(LCTT 譯注:注意指令中用 <code>\</code> 做了轉義。)

但如果你想要自定義提示符,不應該修改 <code>/etc/bashrc</code> ,而是應該在你的主目錄下将自定義指令加到 <code>.bashrc</code> 檔案中。

在 <code>man bash</code> 中的 PROMPTING 章節中,你能夠找到所有 <code>PS1</code> 和 <code>PS2</code> 相關的特殊字元的描述,以下是一些比較常用的:

<code>\u</code>:使用者名

<code>\h</code>:短主機名

<code>\W</code>:目前你所在的目錄的名稱(basename),<code>~</code> 表示你的主目錄

<code>\s</code>:Shell 名字(bash 或者 sh,取決于你的 Shell 的名字是什麼)

<code>\v</code>:Shell 的版本号

除了上面這些,還有很多有用的字元串可以用在提示符當中:

<code>\d</code>:将日期擴充成 “Tue Jun 27” 這種格式

<code>\D{fmt}</code>:允許自定義日期格式——可通過 <code>man strftime</code> 來獲得更多資訊

<code>\D{%c}</code>:獲得本地化的日期和時間

<code>\n</code>:換行(參考下面的多行提示符)

<code>\w</code>:顯示目前工作目錄的完整路徑

<code>\H</code>:目前工作機器的完整主機名

除了以上這些,你還可以在 Bash 的 man 頁面的 PROMPTING 部分找到更多的特殊字元和它的用處。

如果你的提示符過長(比如說你想包括 <code>\H</code> 、<code>\w</code> 或完整的日期時間時 ),想将提示符切成兩行,可以使用 <code>\n</code> 将提示符切斷成兩行顯示,比如下面的多行的例子會在第一行顯示日期、時間和目前工作目錄,第二行顯示使用者名和主機名:

PS1="\D{%c} \w\n[\u@\H]$ "

人們偶爾也想将提示符變成彩色的。雖然我覺得彩色提示符讓人分心、易怒,但是也許你很喜歡。如果我們想将日期變成紅色的,目錄變成青藍色,使用者名搞一個黃色背景,你可以這樣做:

<a href="http://jbcdn2.b0.upaiyun.com/2017/07/e93d223f94256801e7b835a1d8a8fd6a.png" target="_blank"></a>

<a href="http://jbcdn2.b0.upaiyun.com/2017/07/6b40448b267a67ff6bfa9118492cf7f4.png" target="_blank"></a>

是以你最喜歡的自定義提示符是什麼樣子的呢?有沒有讓你抓狂的自定義提示符呢?請在評論裡告訴我吧~

作者簡介:

Dave Neary – Dave Neary 是紅帽開源和标準化團隊成員,幫助開源項目對紅帽的成功至關重要。自從在 1999 年為 GIMP 送出了第一個更新檔以來,他一直帶着各種不同的帽子,在開源的世界徜徉。

      本文轉自rshare 51CTO部落格,原文連結:http://blog.51cto.com/1364952/1955110,如需轉載請自行聯系原作者

繼續閱讀