我的.bashrc
PS1
(删节)
\u\[\e[01;3$(($RANDOM % 8))m\]@\h \w $'
使用bash的工作方式,它会在每个命令后插入随机颜色,这样@
每次都是不同的颜色(至少在31-37范围内)。
但是,我一直无法在zsh中做类似的事情。 $''
语法不允许命令替换,并且连接也不起作用:
$'\e[01;3'$(($RANDOM % 8))
# The \e[01;3 character is printed first, then the random number
使用引号"
也不起作用;它只打印出文字\e...
我知道zsh也有一些内置的文本颜色,如%{$fg[red]%}
,我可以从数组中选择一种随机颜色,但问题是它需要由PS1
随机选择而不仅仅是在启动或随机选择只会进行一次。
有没有什么方法可以在zsh的PS1中插入一个随机数来实现这个目的?
答案 0 :(得分:3)
您可以使用precmd
hook,在每次提示之前对其进行评估:
randomise_prompt_colour () {
PS1="%n%B%F{$((RANDOM % 8))}@%m %~ %(!.#.\$) "
}
add-zsh-hook precmd randomise_prompt_colour