我正在摆弄颜色代码,试图了解 bash 脚本中如何使用颜色代码,我发现它工作正常,无需在其周围包含 \[\] ,如下所示:
这..
red="\033[38;5;203m"
export PS1="$red\u$green\$(__git_ps1)$blue \W"
..给出了相同的结果:
red="\[\033[38;5;203m\]"
export PS1="$red\u$green\$(__git_ps1)$blue \W"
那么第二种形式有必要吗?
答案1
如果您的提示符包含未括在\[
...中的非打印字符\]
,那么 shell 将错误计算提示符的宽度。结果,它会混淆光标在哪里,并且会错误地更新显示。一个典型的例子是,如果您键入的命令太长,以至于它的长度超过了窗口的宽度,因此它会换行到下一行,然后您退格回到第一行。