我想执行一个命令,将一些动态信息写入shell提示符。如果我静态地进行着色,它可以正常工作,因为我可以在转义句之前和之后放置\[
和\]
:
'\[\e[0;91m\]$(printSomething)\[\e[0m\]'
但是如果着色是动态的,并且我希望外部脚本打印它,那么它就不起作用了。现在我不能直接将转义序列写入PS1。但是如果外部脚本打印\[
和\]
,那么shell会按字面意思显示它。
有没有办法让它发挥作用?
答案 0 :(得分:2)
每次显示时PROMPT_COMMAND
都会重置PS1
。要采取原始提示:
prompt_cmd () {
PS1='\[\e[0;91m\]'
PS1+=$(printSomething)
PS1+='\[\e[0m\]'
}
PROMPT_COMMAND=prompt_cmd
我假设你想要一些不同的颜色。为此,您可以使用prompt_cmd
读取的一些环境变量:
prompt_cmd () {
PS1="\[\e[0;${PROMPT_COLOR}m\]" # note the double quotes
PS1+=$(printSomething)
PS1+='\[\e[0m\]'
}
或者您可以在prompt_cmd
本身运行一些代码来确定要使用的颜色。