仅在非零时显示bash提示中的作业计数

时间:2012-09-28 20:24:05

标签: linux bash shell

bash中的典型提示,例如:

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

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

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

哪个是有用的,因为我偶尔会忘记我有一个停止的工作,只有当我从shell手动注销时才会注意到它。

然而,95%的时间,后台作业计数为0并且在提示中显示它是多余的。

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

2 个答案:

答案 0 :(得分:14)

你可以,例如做这样的事情:

PS1='\u@\h:\w $([ \j -gt 0 ] && echo [\j])\$ '

答案 1 :(得分: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}]\$ "
}