Die Zeichen "+" und "-" neben der Auftragsnummer

Die Zeichen "+" und "-" neben der Auftragsnummer

Auf der Manpage von Bash steht

In Ausgaben zu Jobs (z. B. der Ausgabe des Jobs-Kommandos) wird der aktuelle Job immer mit einem + und der vorherige Job mit einem - gekennzeichnet. Auch ein einzelnes % (ohne zugehörige Job-Angabe) bezieht sich auf den aktuellen Job.

In meiner folgenden Befehlsreihe, nachja 2 > /dev/null &, ich hatte erwartet, dass Job [2] der aktuelle Job ist und nicht Job [1].

Auch am Ende des Befehlsja 3 > /dev/null &Ich hatte erwartet, dass die Ausgabe des Jobs-Befehls wie folgt aussehen würde:

[1] Angehalten
[2]- Läuft
[3]+ Läuft

Was vermisse ich ?

$ yes 1 > /dev/null
^Z
[1]+  Stopped                 yes 1 > /dev/null
$ jobs
[1]+  Stopped                 yes 1 > /dev/null
$ yes 2 > /dev/null &
[2] 3082
$ jobs
[1]+  Stopped                 yes 1 > /dev/null
[2]-  Running                 yes 2 > /dev/null &
$ yes 3 > /dev/null &
[3] 3116
$ jobs
[1]+  Stopped                 yes 1 > /dev/null
[2]   Running                 yes 2 > /dev/null &
[3]-  Running                 yes 3 > /dev/null &

Antwort1

Aus derselben Manpage:

[…] der aktuelle Job, also der letzte Job, der angehalten wurde, während er im Vordergrund war, oder der im Hintergrund gestartet wurde.

Es ist etwas mehrdeutig. Sie können es folgendermaßen verstehen:

  1. Nehmen Sie alle „Jobs, die angehalten wurden, während sie im Vordergrund waren, oder die im Hintergrund gestartet wurden“ …
  2. …dann wähle „das Letzte“.

Aber es isteher:

  1. Nehmen Sie „der letzte Job wurde gestoppt, während er im Vordergrund war“;
  2. aber falls es keinen solchen Job gibt, nehmen Sie „den letzten im Hintergrund gestarteten Job“.

verwandte Informationen