我开始管理基于CentOS的新服务器。我想更改提示,所以我写了以下命令:
PS1 =“\ e [0; 36m [`pwd`] \ $ \ e [m”
完美无缺。但是因为我遇到了烦人的问题。当我写了很长的东西,或者使用向上箭头显示一个较长的命令,或者粘贴它,然后点击“home”到达行的顶部时,光标在命令内停止,前面10个字符提示。例如,让我说我写这个:
[/]$ git log --pretty=oneline
然后点击主页按钮,光标将在“ - ”之后停在“p”字母上。如果我试图用左键移动到顶部,那就是令人讨厌的双关语说“你已经在那里,伙伴”......
现在,让我说我写了
ls
和
之后git log --pretty=oneline
如果我上去两次,提示会显示:
[/]$ git log --ls
如果我继续上去“git log - ”永远不会消失。现在如果我按回车键,它仍会启动ls命令而没有任何问题。看起来它只是一个显示问题。但是,这仍然让我一直困惑......
谢谢你的帮助!
答案 0 :(得分:2)
使用\w
在shell提示符下打印工作目录,而不是尝试嵌入命令。
您还需要转义转义序列,以便bash不会尝试将它们计为打印字符。这是通过将\[
和\]
括起来完成的。
所以你应该得到类似的东西:
PS1="\[\e[0;36m\][\w]\$\[\e[m\]"
您的提示也非常紧凑,您可能希望在其中留出一些空格。关键是你使用括号来转义不可打印的字符。
您可以在bash手册页的PROMPTING部分找到这些替换的完整列表。