如果我不在 bash 脚本中的颜色代码周围包含 \[\] ,什么/什么时候可能会中断?

如果我不在 bash 脚本中的颜色代码周围包含 \[\] ,什么/什么时候可能会中断?

我正在摆弄颜色代码,试图了解 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 将错误计算提示符的宽度。结果,它会混淆光标在哪里,并且会错误地更新显示。一个典型的例子是,如果您键入的命令太长,以至于它的长度超过了窗口的宽度,因此它会换行到下一行,然后您退格回到第一行。

相关内容