转义字符应该放在哪里?

转义字符应该放在哪里?

我尝试通过编辑 .bashrc 来更改提示符:

export PS1="\e[0;32m[\u@\h \W]\$ \e[m"

这似乎有效,但是使用 ctrl-r 访问反向历史记录最终导致我的输入没有出现在将被解释的同一位置(例如这个问题)。不过,使用向上或向下箭头选择以前的命令是没问题的。

我已经看过这个问题,但似乎无法弄清楚在提示符中应用转义字符的位置。我尝试了几种组合,但随后我破坏了正常的文本输入功能或简单的后退/前进历史记录。

如果您可以解释哪些字符实例需要转义以及原因,这将有助于我(希望其他人)学习。

答案1

shell 需要知道提示符在屏幕上占用了多少空间。任何不占用屏幕空间的字符序列都需要使用\[and进行转义\]:这包括转义序列,例如用于设置颜色、为终端窗口提供标题或移动光标的转义序列...

因此,在你的情况下:

export PS1="\[\e[0;32m\][\u@\h \W]\$ \[\e[m\]"

告诉 shell[\u@\h \W]$实际上只占用屏幕上的空间。

相关内容