2013-12-07 64 views
0

我開始管理基於CentOS的新服務器。我想改變的提示,所以我寫了下面的命令:Linux命令行問題及提示

PS1 = 「\ E [0;36米[`pwd`] \ $ \ E [M」

它完美地工作。但是因爲我遇到了一個煩人的問題。當我寫了一些很長的東西,或者使用向上箭頭顯示一個很長的命令時,或者粘貼它,然後點擊「home」以到達該行的頂部時,光標停在命令內,前面10個字符的提示。例如,讓我說我寫這個:

[/]$ git log --pretty=oneline 

然後單擊主頁按鈕,光標將停止在「 - 」後的「p」字母。如果我嘗試使用左鍵移動到可收到上線的頂部,但它確實是煩人的BIP說:「你已經在那裏了,夥計」 ......

現在,可以說,我寫的

ls 

,並在之後

git log --pretty=oneline 

如果我去了兩次,提示顯示此:

[/]$ git log --ls 

如果我繼續上漲「git log」 - 永遠不會消失。現在,如果我按Enter鍵,它仍然會啓動ls命令而不會有任何問題。看起來這只是一個顯示問題。但仍然,這讓我一直困惑......

感謝您的幫助!

回答

2

使用\w可以在shell提示符下打印工作目錄,而不是嘗試嵌入命令。

您還需要轉義轉義序列,以便bash不會嘗試將它們計數爲打印字符。這是通過將它們與\[\]封閉在一起完成的。

所以,你應該結束了,像這樣:

PS1="\[\e[0;36m\][\w]\$\[\e[m\]" 

你的提示也非常緊湊,你可能要堅持一定的空間在裏面。關鍵是你已經使用括號來轉義不可打印的字符。

您可以在bash手冊頁的PROMPTING部分找到這些替換的完整列表。

+0

非常完美,非常感謝! –