LIGHTGREEN="\[\033[1;32m\]"
LIGHTRED="\[\033[1;31m\]"
WHITE="\[\033[0;37m\]"
RESET="\[\033[0;00m\]"
function error_test {
if [[ $? = "0" ]]; then
echo -e "$LIGHTGREEN"
else
echo -e "$LIGHTRED"
fi
}
PS1="\u\$(error_test)@\w$RESET \$ "
看起来这样可以准确地输出shell:
username\[\]@~/
颜色代码周围的转义符[和]在我的提示符中显示出来。如果我从颜色的周围删除转义码,它可以工作,但是bash行包装失败了。
请注意,如果我执行PS1="LIGHTGREEN - whatever - $RESET"
,它可以工作,并且[和]没有被转义。然而,我希望在函数内执行此操作,这似乎是问题所在。
我找不到任何关于此的良好文档。 man echo
甚至没有列出-e选项。Bash似乎有很多未记录的知识。
/bin/echo
,它在man 1 echo
中有记录,还有Bash的内置函数echo
,它在help echo
中有记录。更多信息请参见help help
和man bash
。 - tripleee\[
替换为\001
,将\]
替换为\002
。具体可参考 https://dev59.com/_Gw15IYBdhLWcg3wd7lj#43462720。 - Chris Nolet