Os sinais "+" e "-" ao lado do número do trabalho

Os sinais "+" e "-" ao lado do número do trabalho

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:

  1. Pegue todos os "trabalhos interrompidos enquanto estavam em primeiro plano ou iniciados em segundo plano"…
  2. …depois escolha "o último".

Mas éem vez de:

  1. Considere "o último trabalho interrompido enquanto estava em primeiro plano";
  2. mas caso não exista tal trabalho, pegue "o último trabalho iniciado em segundo plano".

informação relacionada