Ist es möglich, die Eingabeaufforderung anzupassen, um anzuzeigen, ob Hintergrundjobs vorhanden sind?

Ist es möglich, die Eingabeaufforderung anzupassen, um anzuzeigen, ob Hintergrundjobs vorhanden sind?

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 \jIhren 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 \jnur anzeigen lassen, wenn Aufträge vorhanden sind.

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

Antwort2

In zsh können Sie verwenden, %jum 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.

verwandte Informationen