我使用以下命令自定义 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\$ '
Run Code Online (Sandbox Code Playgroud)
输出工作正常并且看起来不错
但是当我使用箭头键在历史记录中滚动时
滚动 5-10 次后,我无法移动到行首来修改
我找到的代码/命令和
我看到最后一个命令的一部分
我执行的命令:
$ ps 辅助| grep ssh
滚动后我看到
作为提示行中的示例
$ ps aux 我只能在aux之后开始写入
所以我按 ctrl+c 换行/取消命令
我忘记了$之后的字符吗?
这是我的提示:
z4o.ubuntu
12:46 * /
$
Run Code Online (Sandbox Code Playgroud)
当我复制/粘贴长命令时我遇到了同样的问题
您必须将不可见的序列放入其中\[ \](或以字节为\x01 \x02单位)。请参阅 Bash 手册。
PS1='\[\e[0;36m\]printable stuff\[\e[sequence\]'
Run Code Online (Sandbox Code Playgroud)
Bash 不知道显示的字符占多少列。\e[0;36m打印 7 个字符,但不移动光标。您必须将其传达给 Bash。