バックグラウンドジョブがあるかどうかを表示するプロンプトをカスタマイズすることは可能ですか?

バックグラウンドジョブがあるかどうかを表示するプロンプトをカスタマイズすることは可能ですか?

バックグラウンド ジョブがあるかどうかを表示するように bash プロンプトをカスタマイズすることは可能ですか? バックグラウンド ジョブがあることを忘れがちです。

プロンプトが...だったとします。

$

バックグラウンド ジョブの数を表示する方法はありますか? たとえば、 を使用してバックグラウンドに送信されたバックグラウンド ジョブが 2 つある場合CTRL+Z、プロンプトは次のようになります...

2 $

答え1

\jプロンプトを入力してください。bash マニュアル:

\j シェルによって現在管理されているジョブの数


プロンプトは古くなり、ジョブはいつでも終了する可能性があることを覚えておいてください。そのため、ターミナルをアイドル状態のままにした場合は、プロンプトを再表示する必要があります。


プロンプトを印刷するためだけに余分なプロセスが必要になりますが、\jジョブが存在する場合にのみプロンプトが表示されるようにすることができます。

PROMPT_COMMAND='hasjobs=$(jobs -p)'
PS1='${hasjobs:+\j }\$ '

答え2

zsh では、 を使用して%jジョブの数を示すことができます"%1(j.%j.)"。また、 が少なくとも 1 つ実行中のジョブがある場合はジョブの数を表示し、それ以外の場合は何も表示しません (0 ではなく)。たとえば、 を使用すると、RPROMPT="%1(j.%j.)"右側のプロンプトに表示します。詳細はマニュアルをご覧くださいそしてこのSOの答え

関連情報