Ist es möglich, die Bash-Eingabeaufforderung so anzupassen, dass angezeigt wird, ob Hintergrundjobs vorhanden sind? Ich vergesse leicht, dass es Hintergrundjobs gibt.
Angenommen, die Eingabeaufforderung lautete ...
$
Gibt es eine Möglichkeit, die Anzahl der Hintergrundjobs anzuzeigen? Wenn beispielsweise zwei Hintergrundjobs mit an den Hintergrund gesendet würden CTRL+Z
, wäre die Eingabeaufforderung ...
2 $
Antwort1
Geben Sie \j
Ihren Vorschlag ein.Bash-Handbuch:
\j
Die Anzahl der Jobs, die derzeit von der Shell verwaltet werden
Denken Sie daran, dass Eingabeaufforderungen veralten und Jobs jederzeit beendet werden können. Wenn Sie das Terminal also im Leerlauf gelassen haben, sollten Sie die Eingabeaufforderung erneut anzeigen.
Auf Kosten eines zusätzlichen Vorgangs, nur um Ihre Eingabeaufforderung zu drucken, können Sie sie \j
nur anzeigen lassen, wenn Aufträge vorhanden sind.
PROMPT_COMMAND='hasjobs=$(jobs -p)'
PS1='${hasjobs:+\j }\$ '
Antwort2
In zsh können Sie verwenden, %j
um die Anzahl der Jobs anzugeben und "%1(j.%j.)"
um die Anzahl der Jobs anzuzeigen, wenn mindestens einer ausgeführt wird, und andernfalls nichts (anstelle von 0) anzuzeigen. Beispielsweise RPROMPT="%1(j.%j.)"
um es in der Eingabeaufforderung auf der rechten Seite anzuzeigen.Mehr Infos im HandbuchUnddiese SO-Antwort.