4
我想構建一個Bash提示符,它將同時具有我的git分支信息(使用git的bash完成中的__git_ps1)和一個小小的彩色笑臉來指示最近運行的命令是否成功。是否可以預先評估bash的PS1中的值?
SMILEY="${GREEN}:)${COLOR_NONE}"
FROWNY="${RED}:(${COLOR_NONE}"
STATUS_EMOTICON="if [ \$? = 0 ]; then echo \"${SMILEY}\"; else echo \"${FROWNY}\"; fi"
這裏的提示行我想用:
的笑臉就是採用這種技術,我發現這裏的SO創建
export PS1="[\t]${RED}[\[email protected]$MACHINE:${BOLD_CYAN}\w${GREEN}\$(__git_ps1 ' %s')${RED}]${COLOR_NONE} \`${STATUS_EMOTICON}\`\n$ "
不幸的是,它看起來像程序,由__git_ps1運行,覆蓋$?
的值,並且每次運行false
後,每個表情符號都會顯示綠色笑臉。
取出__git_ps1電話...
export PS1="[\t]${RED}[\[email protected]$MACHINE:${BOLD_CYAN}\w${RED}]${COLOR_NONE} \`${STATUS_EMOTICON}\`\n$ "
...使正確的表情工作。
所以我顯然需要做的是運行__git_ps1
之前評估${STATUS_EMOTICON}
,但包括後__git_ps1
的輸出的評估值。那可能嗎?
這太好了!不過,我只有一個奇怪的問題。由於我的表情符號是顏色編碼的,因此當我顯示提示時,我看到周圍有很多逃逸代碼。我嘗試了很多不同的策略來解決這個問題,但是我最終不得不回到使用PS1中原來的'\\'$ {STATUS_EMOTICON} \''部分。儘管如此,我改變了'STATUS_EMOTICON'來基於_PS1_cmd保存的退出代碼進行評估,所以現在整個事情按我的意圖工作。 – CoreDumpError 2013-03-28 18:35:51