我想执行一个将一些动态信息写入我的 shell 提示符的命令。如果我静态地进行着色,它工作得很好,因为我可以在转义语句之前和之后放置\[
和:\]
'\[\e[0;91m\]$(printSomething)\[\e[0m\]'
但是如果着色是动态的,并且我希望外部脚本打印它,那么它就不起作用了。现在我不能直接将转义序列写入 PS1。但是如果外部脚本打印\[
and \]
,那么 shell 会按字面意思显示它。
有什么办法让它工作吗?
每次显示时使用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
来确定使用哪种颜色。