Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我将提示设置为有颜色:PS1='\e[3;32m[\u@\h:\W]$ \e[m'
PS1='\e[3;32m[\u@\h:\W]$ \e[m'
但是,现在很长的命令不再自动导致出现新行。相反,超过一行的命令将开始出现在当前行的左侧,覆盖当前字符。
提示中的非打印字符需要包含在内,\[...\]以便bash准确计算提示的可见长度。
\[...\]
bash
PS1='\[\e[3;32m\][\u@\h:\W]$ \[\e[m\]' ^^ ^^ ^^ ^^
bash本身不知道那些字节不会被终端显示;是您的终端,而不是显示 7-byte 序列,而是\e[3;32m简单地更改用于显示以下字符的颜色。\u另一方面,它被用户名bash本身替换,因此您不必做任何特别的事情来告诉bash如何正确处理它。
\e[3;32m
\u