題 我是否需要在bash提示符中的\ [和\]中包含ANSI轉義序列?


我想使用ANSI轉義碼自定義我的bash提示符,並註意到在一些howtos中包含了代碼 \[ 和 \] 而在其他人,他們不是。

例如,這些對我來說同樣有效:

PS1='\e[0;32m foo '
PS1='\[\e[0;32m\] foo '

我想知道它有什麼不同?


4
2018-02-21 14:39


起源


請不要 交叉發布。 - Dennis Williamson


答案:


不同之處在於沒有 \[ 和 \],bash將無法跟踪提示的實際長度,並且隨著時間的推移會出現各種視覺故障。


8
2018-02-21 14:45





對此有很好的解釋

這些序列將告訴bash   所包含的字符不佔用   線上的任何空間,都會   允許自動換行繼續   好好工作。沒有他們,你會   結束了一個漂亮的提示   如果你發生的話會弄亂屏幕   輸入接近的命令   終端的極右翼。


6
2018-02-21 15:00