自定义 bash 提示符 PS1

Customize bash prompt PS1

我自定义 bash 提示:

PS1='\e[0;36m\u.\h
\e[0;31m $ux \e[0;92m \e[0;36m \@* \e[0;31m\w\n\e[0;92m$ '

输出有效并且看起来不错

但是当我使用箭头键在历史记录中滚动时

滚动 5-10 次后,我无法移动到行首来修改

code/command 我找到了

我看到了最后一条命令的一部分

我执行的命令:

$ ps 辅助 | grep ssh

滚动后我看到了

作为提示行中的例子

$ps辅助 我只能在 aux

之后开始写

所以我按 ctrl+c 换行/取消命令

我是不是忘记了 $ 后面的字符?

这是我的提示:

z4o.ubuntu
   12:46 * /
$

当我 copy/paste 长命令时我有同样的问题

您必须将不可见序列放入 \[ \](或 \x01 \x02 字节)。查阅 Bash 手册。

PS1='\[\e[0;36m\]printable stuff\[\e[sequence\]'

Bash不知道显示的字符占多少列。 \e[0;36m 打印 7 个字符,但不移动光标。您必须将其传达给 Bash.