11

bash 中的典型提示如下:

PS1="\u@\h:\w\$ "

您可以使用 显示后台作业的数量\j,例如:

PS1="\u@\h:\w [\j]\$ "

这很有用,因为我时不时忘记我有一个停止的工作,并且只有在我手动从 shell 注销时才会注意到它抱怨。

但是,在 95% 的情况下,后台作业计数为 0,在提示中显示它是多余的。

如何在提示中显示作业计数,但前提是它不为零?

4

2 回答 2

16

例如,您可以执行以下操作:

PS1='\u@\h:\w $([ \j -gt 0 ] && echo [\j])\$ '
于 2012-09-28T20:29:17.723 回答
3

接受的答案对我不起作用(我有 Bash v4.2.46)。它会抛出这样的错误:

[: \j: integer expression expected

我不得不使用 PROMPT_COMMAND 来实现相同的功能:

export PROMPT_COMMAND=__prompt_command
function __prompt_command() {
    local JOBS=$(jobs | wc -l | tr -d 0)
    PS1="\u@\h:\w [${JOBS}]\$ "
}
于 2015-07-24T12:05:48.633 回答