Bash 终端无法正确换行文本

Bash 终端无法正确换行文本

我正在使用gnome-terminalbash,当我有一个应该越过该行的命令时,它只会停留在同一行。因此,不要:

echo "abcdefghijklmnopqrstuvwxyz"

我会得到

opqrstuvwxyz""abcdefghijklmn

或者类似的东西。但是,如果我按下回车键,命令仍然有效。我相信这与我的 PS1 变量有关,但我不知道它出了什么问题。它在这里:

export PS1='\e[1;35m[\u:\w]\$\e[0;35m '

答案1

这似乎有点相关:

Bash 手册页建议将输出换行。这有助于 Bash 忽略不可打印的字符,以便正确计算提示符的大小tput\[ \]

来源

您的案例中的“tput输出”如下所示:\e[1;35m\e[0;35m(有两个单独的片段需要包装)。它们也可以写成 和\033[1;35m\033[0;35m通常,您需要包装任何不可打印的序列。

我修改了你的PS1

export PS1='\[\e[1;35m\][\u:\w]\$\[\e[0;35m\] '

并且它对我来说似乎没有任何问题。

相关内容