11

次のようなbashの典型的なプロンプト:

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

\jたとえば、次を使用してバックグラウンドジョブの数を表示できます。

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

これは便利です。なぜなら、時々私は仕事を止めたことを忘れて、シェルから手動でログアウトした場合にのみ文句を言うときに気付くからです。

ただし、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 に答える