我(相信)我遇到以下PS1不能正确使用转义序列的问题:
\ x1b [35mabc \ x1b [0m \ x1b [33mxyz \ x1b [0m \ x1b [34m \ w \ x1b [0m \ $
在我开始使用历史命令行之前,提示符看起来还不错,然后bash似乎迷失了该行的开始位置。我以为this stack overflow question会有所帮助,但我真的不知道我的转义序列丢失了。是我缺少右括号吗?另外,我有点困惑为什么我用\ x1b而不是\。
请帮助!
答案 0 :(得分:0)
您完全缺少括号(包括打开和关闭)。尝试使用
\\[\x1b[35m\\]abc\\[\x1b[0m\\] \\[\x1b[33m\\]xyz\\[\x1b[0m\\] \\[\x1b[34m\\]\w\\[\x1b[0m\\]\$
也就是说,在提示中的每个转义序列周围放置\\[
和\\]
。
我个人的解决方案是使用两行提示(因此PS1中有一个\ n),其中第二行很短且没有转义符。因此,bash可以毫不费力地找出它的宽度:
PS1='\033[0;31m[\h${debian_chroot:+($debian_chroot)}] \033[0;32m[\u] \033[0;33m[\w$(__git_ps1 " (%s)")]\033[0;39m\n --> '