之前有讀者問到,如何在終端顯示目前的git分支,實際上這就是自定義終端顯示配置了。不過在直接介紹如何顯示目前分支之前,來看看到底怎麼回事。
bashrc配置
每次我們登入一個shell終端的時候,前面都有一些固定的顯示資訊:
[email protected]:#
這些顯示資訊其實可以配置的。 我們打開使用者家目錄下的.bashrc檔案,找到類似下面的關于PS1的内容:
if [ "$color_prompt" = yes ]; then PS1='${debian_chroot:+($debian_chroot)}[033[01;32m][email protected][033[00m]:[033[01;34m]W[033[00m]$ 'else PS1='${debian_chroot:+($debian_chroot)}[email protected]:W$ 'fi
這裡就是用來配置你的終端顯示的了。 舉個例子:
$ echo -e "033[31m red color 033[0m" red color

而其他的符号什麼意思呢?
d :代表日期,H :完整的主機名稱h :僅取主機的第一個名字 :顯示時間為24小時格式,如:HH:MM:SST :顯示時間為12小時格式A :顯示時間為24小時格式:HH:MMu :使用者名v :BASH的版本資訊w :完整的工作目錄名稱W :列出最後一個目錄$ :提示字元,如果是root時,提示符為:# ,普通使用者則為:$
是以說白了,就是根據你自己的需要配置自己終端想要的資訊。
這個時候我們再來看前面的其中一條簡單的配置:
'${debian_chroot:+($debian_chroot)}[email protected]:W$ '
$debian_chroot這裡我們可以忽略,因為它是一個變量的值,我們完全可以自定義。
可以看到這裡有:
u 使用者名h 主機名W 最後一個目錄名$ 提示字元
而通過指令擷取的相關内容分别為:
$ whoamiroot$ hostnameubuntu$ basename `pwd`公衆号程式設計珠玑
是以我的終端最終顯示的是:
[email protected]:公衆号程式設計珠玑#
通常來說,預設的配置就可以了,經常需要改動的可能就是預設它顯示了全路徑,這裡隻需要将w 替換為 W即可。
然後執行指令:
source ~/.bashrc
讓配置生效即可。
再來梳理一下過程:
- 根據需要修改PS1顯示項
- 執行source .bashrc使其生效
這裡注意,Linux啟動過程中,配置檔案加載是有順序的,
某使用者家目錄下的bashrc隻影響目前使用者,如果想要全系統修改生效,可以修改/etc/bash.bashrc(系統差異,可能不一樣)。
如何顯示目前git分支
其實到這裡你應該基本上已經明白了,無非就是将git目前分支的資訊配置在PS1中罷了。
如何擷取目前git分支
我們都知道:
$ git branch master* testBranch
可以檢視分支資訊,其中前面有*的表示目前所在分支,是以我們通過字元處理拿到即可。
或者直接通過指令:
$ git rev-parse --abbrev-ref HEADtestBranch
拿到。
将分支資訊配置在PS1中
考慮到有的目錄下可能并不存在git項目,是以需要做是否為空的判斷,也要注意處理标準錯誤。是以将擷取git分支資訊的部分寫成一個shell函數:
git_branch(){ branch=`git rev-parse --abbrev-ref HEAD 2>/dev/null` if [ "${branch}" != "" ] then if [ "${branch}" = "(no branch)" ] then branch="(`git rev-parse --short HEAD`...)" fi echo "($branch)" fi}
将其加入到.bashrc檔案結尾中,然後修改PS1的内容:
PS1='${debian_chroot:+($debian_chroot)}[email protected]:W$(git_branch)$ 'PS1='${debian_chroot:+($debian_chroot)}[033[01;32m][email protected][033[00m]:[033[01;34m]W$(git_branch)[033[00m]$ '
修改完成後儲存,執行:
$ source ~/.bashrc
目前裡面的顔色你可以根據自己的需要自定義。再來看看之前的效果,是不是覺得沒那麼難配置了?
總結
實際上就是根據自己的需要去配置終端顯示罷了,可以自己選擇顔色,變量内容等等。
原文來自:https://www.linuxprobe.com/?p=175738