zsh提示 - 检查是否有任何后台作业

时间:2012-04-17 15:22:22

标签: zsh background-process prompt

我正在自定义我的zsh提示符并找到以下内容以检查是否有任何后台作业:

if [[ $(jobs | wc -l) -gt 0 ]]; then # has background job(s)
    number_jobs='J:${cyan}%j${no_color}'
else # no background job(s)
    number_jobs=""
fi

我面临的问题是代码似乎只在我打开一个新会话而不是在每个命令之后才会被评估,这使得它变得毫无用处。如何在每个命令后重新评估number_jobs

1 个答案:

答案 0 :(得分:29)

zsh有一个特殊的提示序列,比如C三元运算符。以下结构表示如果有一个或多个作业,则打印其编号或不打印任何内容:

 %(1j.%j.)