2011-08-05 149 views
1

如果我這樣做:終端不工作顏色提示

 
echo foo 
PS1='\e[0;30mtest \e[0m' 

,然後按下向上箭頭test PS1='\e[0;30mtest \e[0m'出現(如預期)。
但是,如果我按向上箭頭,所以我應該有echo foo,它導致test PS1='\e[0;3echo foo

如果我設置了PS1到任何不包括顏色它的工作原理:

echo foo 
PS1='\e[0;30mtest \e[0m' 
PS1='test ' 
  • 三聯印刷機向上箭頭,結果於echo foo

注:echo foo仍然是執行命令,如果我按輸入

我已經在這兩個iTerm2和蘋果終端嘗試這樣做。

爲什麼這樣做,我該如何解決它?

回答

4

試試這個:

PS1="\[\e[0;30m\]test \[\e[0m\]" 

通過使用額外\[\]括號,你告訴bash,你已經獲得了一些非打印字符,當你按下向上箭頭可以曲解。

1
PS1='\[\e[0;30m\]test \[\e[0m\]' 
# ^^  ^^  ^^  ^^ 

\[\]講述非打印字符的bash;否則它不知道 你的提示實際上有多長時間,因此,這是錯誤的提示。有關更多詳細信息,請參閱bash聯機幫助頁的PROMPTING部分 。