如何避免 bash 提示符中出现这些虚假字符?

如何避免 bash 提示符中出现这些虚假字符?

我有 Fedora 20,我想调整 bash 提示符以使其对我更有用。目前,我的 PS1 提示符由 ~/.bash_profile 文件中的以下几行设置:

 LP=" Last prompt at: "
 PS1="\[\033[s\033[0;0H\033[0;47m\033[K\033[1;34m[\$LP\]t\033[0m\033[u[<\u@\h \W>]\$ "
 echo

这在屏幕顶部给了我一条漂亮的线,带有灰色条(在本副本中未显示)和最后一次提示的时间,因此:

[ Last prompt at: ]09:22:46
[<Harry@localhost ~>]$ 

如果没有echo,当打开终端屏幕时,提示会掩盖顶行的消息。 echo 的作用是回显它的参数,这样当 .bashrc.当打开一个新终端时运行,没有任何参数,它很好地转到新行,单独保留顶行。后续提示不会运行 .bashrc,因此不会出现对新行的回显。

我的问题涉及字符串周围提示中的“[]”括号Last prompt at:。请问,如何避免这些括号出现在显示的消息中?

已解决
回应@guido 的回答。我已经尝试过删除方括号,但后来我完全丢失了字符串。我在这里注意到,您在 LP 之后添加了一个空格,这确实给了我想要的东西,但我不明白为什么需要这个空格:请您在答案中添加解释一下吗?

答案1

只需从 PS1 中删除方括号即可(周围也有拼写错误\t):

LP=" Last prompt at: "
PS1="\[\033[s\033[0;0H\033[0;47m\033[K\033[1;34m\$LP \t\033[0m\033[u\][<\u@\h \W>]\$ "
echo

答案2

吉多已经回答了你的具体问题,但请注意:

此外,您还可以将滚动区域设置为从第二行开始,这样滚动就不会删除该行。

PS1="\[\e[s\e[2;0r\e[H\e[0;47m\e[K\e[1;34m$LP\t\e[0m\e[u\]<\u@\h \W>\$ "

(虽然就我个人而言,我不会在 shell 级别做这种事,但例如使用screen及其 hardstatus 功能)

相关内容