在我编辑了我的 .bashrc 之后,我的提示中出现了鬼魂

Mr *_*lis 7 bash prompt terminal bashrc

我将以下内容添加到我的~/.bashrc

export PS1="\e[0;35m[\u@\h \W]\$ \e[m "
echo -e "\e[0;35mYOU ARE ON THE LIVE SERVER !!\e[0m"
Run Code Online (Sandbox Code Playgroud)

可悲的是,现在,每次我在 bash 中粘贴很长的内容时,它都会变得松软,tab屏幕上到处都是幽灵字符,并且线条相互吞噬,有人知道为什么吗?

Rui*_*iro 11

过去我也遇到过 ANSI 颜色代码与命令行导航混淆的问题;您需要放置 ANSI 代码\[ \],以便命令 shell 知道如何(不)将它们作为输入字符串的一部分考虑在内。

如:

export PS1="\[\e[0;35m\][\u@\h \W]\$\[\e[m\] "
echo -e "\[\e[0;35m\]YOU ARE ON THE LIVE SERVER !!\[\e[0m\]"
Run Code Online (Sandbox Code Playgroud)

关于为什么 shell 需要\[和的一些解释\]:为了在终端的字符矩阵中的正确位置绘制提示,shell 需要知道提示字符串的正确长度,即可打印字符的数量,即不是控制字符或字符序列。

但是,shell 不知道终端认为哪些字符序列是可打印的。因此人们需要提供提示到外壳可打印和非打印的序列之间进行区分,这是的目的\[\]