bash中的典型提示,例如:
PS1="\u@\h:\w\$ "
您可以使用\j
显示后台作业的数量,例如:
PS1="\u@\h:\w [\j]\$ "
哪个是有用的,因为我偶尔会忘记我有一个停止的工作,只有当我从shell手动注销时才会注意到它。
然而,95%的时间,后台作业计数为0并且在提示中显示它是多余的。
如何在提示中显示作业计数,但前提是它非零?
答案 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}]\$ "
}