在bash典型提示符是这样的:显示作业计数提示只有当非零
PS1="\[email protected]\h:\w\$ "
的可以显示使用\j
的后台作业的数量,例如:
PS1="\[email protected]\h:\w [\j]\$ "
哪是有用的,因为我偶尔会忘记我有一个停止的工作,只有当我手动从shell注销时发出抱怨时才会注意。
但是,95%的时间,后台作业计数为0,并在提示符中显示它是多余的。
如何在提示中显示作业计数,但仅在非零时才显示作业计数?
在bash典型提示符是这样的:显示作业计数提示只有当非零
PS1="\[email protected]\h:\w\$ "
的可以显示使用\j
的后台作业的数量,例如:
PS1="\[email protected]\h:\w [\j]\$ "
哪是有用的,因为我偶尔会忘记我有一个停止的工作,只有当我手动从shell注销时发出抱怨时才会注意。
但是,95%的时间,后台作业计数为0,并在提示符中显示它是多余的。
如何在提示中显示作业计数,但仅在非零时才显示作业计数?
您可以做这样的事情:
PS1='\[email protected]\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="\[email protected]\h:\w [${JOBS}]\$ "
}
注意,这表明停止**和**运行作业(虽然区别可能并不重要给你) – ashirley