Bash 终端无法正确换行文本

4 linux terminal bash

我正在将gnome-terminalbash 与 bash 一起使用,当我有一个应该越过该行的命令时,它只会保留在同一行上。所以而不是:

echo "abcdefghijklmnopqrstuvwxyz"
Run Code Online (Sandbox Code Playgroud)

我会得到

opqrstuvwxyz""abcdefghijklmn
Run Code Online (Sandbox Code Playgroud)

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

export PS1='\e[1;35m[\u:\w]\$\e[0;35m '
Run Code Online (Sandbox Code Playgroud)

Kam*_*ski 8

这似乎有些相关:

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

来源

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

我修改了你的PS1

export PS1='\[\e[1;35m\][\u:\w]\$\[\e[0;35m\] '
Run Code Online (Sandbox Code Playgroud)

它似乎对我有用,没有问题。