Linux命令行问题提示

时间:2013-12-07 22:24:49

标签: linux bash shell command-line ps1

我开始管理基于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命令而没有任何问题。看起来它只是一个显示问题。但是,这仍然让我一直困惑......

谢谢你的帮助!

1 个答案:

答案 0 :(得分:2)

使用\w在shell提示符下打印工作目录,而不是尝试嵌入命令。

您还需要转义转义序列,以便bash不会尝试将它们计为打印字符。这是通过将\[\]括起来完成的。

所以你应该得到类似的东西:

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

您的提示也非常紧凑,您可能希望在其中留出一些空格。关键是你使用括号来转义不可打印的字符。

您可以在bash手册页的PROMPTING部分找到这些替换的完整列表。