Linux中國

Linux Bash 提示符的一些騷操作

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

[user@$host ~]$

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

如何設置 Bash 提示符

Bash 提示符是通過環境變數 PS1 提示符字元串 1 Prompt String 1 ) 來設置的,它用於互動式 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-v$ ,如果是的話則將值設置為 [u@h W]$。(LCTT 譯註:注意命令中用 `` 做了轉義。)

但如果你想要自定義提示符,不應該修改 /etc/bashrc ,而是應該在你的主目錄下將自定義命令加到 .bashrc 文件中。

上面提到的 uhWsv 是什麼意思?

man bash 中的 PROMPTING 章節中,你能夠找到所有 PS1PS2 相關的特殊字元的描述,以下是一些比較常用的:

  • u:用戶名
  • h:短主機名
  • W:當前你所在的目錄的名稱(basename),~ 表示你的主目錄
  • s:Shell 名字(bash 或者 sh,取決於你的 Shell 的名字是什麼)
  • v:Shell 的版本號

還有哪些特殊的字元串可以用在提示符當中

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

  • d:將日期擴展成 「Tue Jun 27」 這種格式
  • D{fmt}:允許自定義日期格式——可通過 man strftime 來獲得更多信息
  • D{%c}:獲得本地化的日期和時間
  • n:換行(參考下面的多行提示符)
  • w:顯示當前工作目錄的完整路徑
  • H:當前工作機器的完整主機名

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

多行提示符

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

PS1="D{%c} wn[u@H]$ "

還能再好玩點嗎?

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

PS1="[e[31m]D{%c}[e[0m]
     [e[36m]w[e[0m]n[[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 提交了第一個補丁以來,他一直帶著各種不同的帽子,在開源的世界徜徉。

via: https://opensource.com/article/17/7/bash-prompt-tips-and-tricks

作者:Dave Neary 譯者:吳霄/toyijiu 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的電子郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國

    Linux中國

    DevOps 將去向何方?

    微軟、谷歌、亞馬遜、IBM 和甲骨文如今都在關注云上的 DevOps。這些大公司正在給企業提供 IT 自動化的服務。然而,DevOps 仍然在持續的演進中。DevSecOps、AIOps 和 NoOps 正在成為下一個流行詞。