A página de manual do bash diz
Na saída referente a trabalhos (por exemplo, a saída do comando jobs), o trabalho atual é sempre sinalizado com um +, e o trabalho anterior com um -. Uma única % (sem especificação de trabalho associada) também se refere ao trabalho atual.
Na minha série de comandos abaixo, depoissim 2 > /dev/null &, eu esperava que o trabalho [2] fosse o trabalho atual e não o trabalho [1].
Também no final do comandosim 3 > /dev/null &Eu esperava que a saída do comando jobs fosse assim:
[1] Parado
[2]- Em execução
[3]+ Em execução
o que estou perdendo ?
$ 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 &
Responder1
Na mesma página de manual:
[…] o trabalho atual, que é o último trabalho interrompido enquanto estava em primeiro plano ou iniciado em segundo plano.
É um tanto ambíguo. Você pode entender isso como:
- Pegue todos os "trabalhos interrompidos enquanto estavam em primeiro plano ou iniciados em segundo plano"…
- …depois escolha "o último".
Mas éem vez de:
- Considere "o último trabalho interrompido enquanto estava em primeiro plano";
- mas caso não exista tal trabalho, pegue "o último trabalho iniciado em segundo plano".