终端无法使用颜色提示
如果我这样做:
echo foo PS1='\e[0;30mtest \e[0m'
然后按向上箭头 test PS1='\e[0;30mtest \e[0m'
出现(如预期)。
但是如果我按向上箭头,那么我应该有echo foo
,它会导致test PS1='\e[0;3echo foo
如果我将 PS1 设置为不包含颜色的任何内容:
echo foo
PS1='\e[0;30mtest \e[0m'
PS1='test '
- 按三次 向上箭头,结果为
echo foo
注意:echo foo
是仍然执行命令如果我按 Enter
我已经在 iTerm2 和苹果终端中尝试过这个。
为什么会这样以及我该如何解决它?
If I do this:
echo foo PS1='\e[0;30mtest \e[0m'
and then presses the up arrow test PS1='\e[0;30mtest \e[0m'
appears (as expected).
But if I press up arrow, so I should have echo foo
, it results in test PS1='\e[0;3echo foo
If I set the PS1 to anything which doesn't include color it works:
echo foo
PS1='\e[0;30mtest \e[0m'
PS1='test '
- triple press up arrow, results in
echo foo
Note: echo foo
is still the command executed if I press Enter
I have tried this in both iTerm2 and the apple Terminal.
Why is it doing that and how do I fix it?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
试试这个:
通过使用额外的
\[
和\]
括号,您可以告诉bash
您有一些非打印字符,这些字符当您按向上箭头时,可能会产生误解。Try this:
By using extra
\[
and\]
brackets, you are tellingbash
that you've got some non-printing characters, which it may be misinterpreting when you press the up-arrow.\[
和\]
告诉 bash 非打印字符;否则它不知道你的提示实际上有多长,因此提示被破坏了。请参阅
提示
部分bash 联机帮助页以获取更多详细信息。
The
\[
and\]
tell bash about non-printing characters; otherwise it has no ideahow long your prompt actually is, hence the mangled prompt. See the
PROMPTING
sectionof the bash manpage for more details.