【发布时间】:2017-03-25 10:50:53
【问题描述】:
如果之前的退出代码为 0,我想显示一个绿色的笑脸,如果不成功,我想显示一个红色的笑脸。
基本上我想做这个提示,但包括其他东西。
PS1='\u@\h:\w `if [ $? = 0 ]; then echo \[\e[32m\]:\)\[\e[37m\]; else echo \[\e[31m\]:\(\[\e[37m\]; fi` $ '
我想将条件逻辑抽象为一个函数,但是当我尝试将这两个组合起来时,会显示转义字符而不是颜色。
smiley()
{
if [ $? == 0 ]; then
echo ':)'
else
echo ':('
fi
}
RED="\033[1;5;91m"
GREEN="\033[1;5;92m"
NONE="\033[m"
NORMAL="\[\033[0m\]"
YELLOW="\[\033[1;4;93m\]"
MAGENTA="\[\033[35m\]"
WHITE="\[\033[1;37m\]"
BLINK="\[\033[5m\]"
#INVERT="\[\e[7m\]"
#OFF="\[\033[m\]"
PS1="${YELLOW}\u${MAGENTA}@${YELLOW}\h${NORMAL}:${WHITE}\w $(smiley)\n"
我什至尝试了一条线路,但也没有用。
PS1='\[\033[1;4;93m\]\u\[\033[35m\]@\[\033[1;4;93m\]\h\[\033[0m\]\[\033[1;37m\] \W if [ $? = 0 ]; then echo \[\e[32m\]:\)\[\e[37m\]; else echo \[\e[31m\]:\(\[\ e[37m\]; fi\n'
如果没有 PROMPT_COMMAND 有什么方法可以做到这一点?
【问题讨论】:
-
笑脸作为状态指示器是个好主意!我使用了
{0}或{1},但现在改成这个了。 -
PS1='\[\e[$([[ $? = 0 ]] && printf 32 || printf 31);1m\]^^^\[\e[m\] ${debian_chroot:+($debian_chroot)}\[\e[1;31m\]\u\[\e[1;33m\]@\[\e[1;36m\]\h \[\e[1;33m\]\w \[\e[1;35m\]\$ \[\e[0m\]'它将在提示符的开头打印 ^^^ 红色或绿色。此外,您将拥有漂亮多彩的用户、主机、路径 :)
标签: bash