仅在键入字符后退格键清除bash提示符

时间:2017-02-21 05:46:20

标签: linux bash unix redhat prompt

这里有新的linux用户。

我的bash提示符如下所示:

export PS1=$"\[\e[1;32m\d \t \e[1;33mฅ^\e[m\e[1;36mᵒ\e[m\e[1;33mﻌ\e[m\e[1;36mᵒ\e[m\e[1;33m^ฅ \e[1;35m\W\e[1;32m$\]"

(它是一只小猫ฅ^ᵒﻌᵒ^ฅ

现在我已将]添加到字符串的末尾,当提示为空时,它不再删除我的bash提示字符。但是,一旦我开始键入命令然后按退格键,它会删除我的bash提示符。

有没有办法防止这种情况,或者这只是一种抨击?

谢谢!

1 个答案:

答案 0 :(得分:2)

\[...\]表示包含的部分不占用提示中的任何空格。因此,它们将用于xterm控制序列(\e[1;32m等),而不是提示文本(\d\t等)。尝试类似:

PS1='\[\e[1;32m\]\d \t\[\e[1;33m\]ฅ^\[\e[m\e[1;36m\]ᵒ\[\e[m\e[1;33m\]ﻌ\[\e[m\e[1;36m\]ᵒ\[\e[m\e[1;33m\]^ฅ\[\e[1;35m\]\W\[\e[1;32m$\]'

如果您的整个提示都包含在\[...\]中,那么bash认为您的提示完全没有空格,并且从该行的开头开始输入。

(顺便说一下,你不需要导出PS1。)