Знаки «+» и «-» рядом с номером задания

Знаки «+» и «-» рядом с номером задания

На странице руководства bash написано:

В выходных данных, относящихся к заданиям (например, в выходных данных команды jobs), текущее задание всегда помечается знаком +, а предыдущее задание — знаком -. Одиночный % (без сопутствующей спецификации задания) также относится к текущему заданию.

В моей серии команд, приведенной ниже, последа 2 > /dev/null &Я ожидал, что работа [2] будет текущей работой, а не работой [1].

Также в конце командыда 3 > /dev/null &Я ожидал, что вывод команды jobs будет таким:

[1] Остановлено
[2]- Работает
[3]+ Работает

что я упускаю?

$ 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 &

решение1

Из той же страницы руководства:

[…] текущее задание, т. е. последнее задание, остановленное на переднем плане или запущенное в фоновом режиме.

Это несколько двусмысленно. Вы можете понять это как:

  1. Возьмите все «задания, остановленные на переднем плане или запущенные в фоновом режиме»…
  2. …затем выберите «последний».

Но этоскорее:

  1. Возьмем «последнюю работу, остановленную, когда она была на переднем плане»;
  2. но если такой задачи нет, возьмите «последнюю задачу, запущенную в фоновом режиме».

Связанный контент