天天看點

Linux 終端指令行提示符的藝術--PS1進階

Linux 終端指令行提示符的藝術--PS1進階

話不多說,先瞅瞅我的指令行提示符(有點大):

Linux 終端指令行提示符的藝術--PS1進階

圖中指令行解釋:

┌[陽曆日期/農曆日期 時間]

├[目前目錄下目錄數+目前目錄下檔案數][目前絕對目錄]

└[使用者名@主機名-第幾個終端 ╰_╯]

相關配置檔案

全局配置檔案:/etc/bash.bashrc或者/ect/bashrc

單使用者配置檔案:“~”目錄下的.bashrc隐藏檔案

代碼

對應于上圖中的代碼如下(添加位置一般将原有的PS1覆寫為準,即可以在原有的PS1上修改,也可以直接添加到配置檔案的最後):

get_ps1()
{
Date=$(date +%F)

Time=$(date -R | cut -c 18-25 |sed 's/,//')

Lunar=$(lunar `date +%Y\ %m\ %d` |grep '^Lunar\ :' |awk '{print $3}' |sed 's/^.....\(.*\)..$/\1/')

dn=$(ls -l | grep ^d | wc -l);fn=$(expr $(ls | wc -l) - ${dn})

Num=$(echo $Lunar|wc -m)
[ "$Num" = "5" ] && space=' '
[ "$Num" = "4" ] && space='  '

PS1="\342\224\214[\[\e[01;32m\]${Date}/${Lunar} ${space}${Time}\[\e[00m\]]\n\
\342\224\234[\[\e[01;34m\]${dn}\[\e[00m\]+${fn}][\[\e[01;34m\]\w\[\e[00m\]]\n\
\342\224\224[${debian_chroot:+($debian_chroot)}\[\e[01;32m\]\u@\h-\l \[\e[00m\]\342\225\260\137\342\225\257]\$"
}
PROMPT_COMMAND=get_ps1      

如果你覺的上面的指令行提示符太複雜,你也可以将它縮減。。。

你需要了解的

如果你想設計一個自己喜歡的并且夠炫的指令行提示符,你首先要了解以下一些東西。

1)裡面涉及到了農曆日期,在Ubuntu 12.04 LTS中可以從源中找到lunar軟體包,但在Fedora和CentOS中并沒有,為此我寫了一個陽曆轉農曆的shell腳本,具體可以參見我的上一篇文章Linux shell實作陽曆轉農曆。

2)轉義符及顔色。這個我就不再羅嗦了,google一下“Linux 指令行 顔色”會有很多答案的。

3)PROMPT_COMMAND,這個是實時指令行的關鍵,這個變量的内容會在顯示bash提示符前執行,是以上面用到的實時内容需要它。

4)特殊字元顯示不了怎麼辦?你可以将它轉換為字元編碼,可以在http://0xcc.net/jsescape/進行轉義,在Plain text欄輸入你要轉義的字元,在\OOO欄就是你想要的字元編碼。

獨行者如風!