2013-12-07 39 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

非常完美,非常感谢! –