我希望我的终端提示符根据上一个命令的成功而改变颜色。目前我通过以下脚本实现了这一点:
exitstatus()
{
if [[ $? == 0 ]]; then
echo -e "\e[38;5;45mबरें"
else
echo -e "\e[38;5;211mचूक"
fi
}
PS1="\[\e[38;5;252m\][\[\e[38;5;214m\]\A \$(exitstatus)\[\e[38;5;252m\]]> \[\e[0m\]"
这里的问题是 exitstatus 内的 echo 无法正确转义颜色,留下一些不可见的字符。当我输入长命令时,这会导致我的终端剪短行并将新行写在前一行的上面。
\[\]
使用 PS1 变量,我通过添加around解决了这个问题\e[...m
。然而,Echo 没有方括号作为转义字符,我找不到一种方法让它正确转义颜色。