bash 中的典型提示如下:
PS1="\u@\h:\w\$ "
您可以使用 显示后台作业的数量\j
,例如:
PS1="\u@\h:\w [\j]\$ "
这很有用,因为我时不时忘记我有一个停止的工作,并且只有在我手动从 shell 注销时才会注意到它抱怨。
但是,在 95% 的情况下,后台作业计数为 0,在提示中显示它是多余的。
如何在提示中显示作业计数,但前提是它不为零?
例如,您可以执行以下操作:
PS1='\u@\h:\w $([ \j -gt 0 ] && echo [\j])\$ '
接受的答案对我不起作用(我有 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}]\$ "
}