Когда я запускаю команду в фоновом режиме через command &
, идентификатор процесса команды можно получить из переменной $!
. Это значение можно сохранить и использовать в последующих командах, таких как kill
.
Однако для некоторых встроенных модулей, в частности fg
, требуется «спецификация заданий», которая представляет собой специальную оболочку, начинающуюся с %
. Поэтому, если я запускаю фоновую команду, я могу затем использовать ее передним планом с помощью command & fg %+
, потому что %+
- это задание самой последней заданной команды.
Если я запускаю две команды в фоновом режиме, я могу перенаправить первую команду с помощью %-
, которая является спецификацией заданий, которая является предыдущим значением %+
: command1 & command2 & fg %-
.
Но это не может быть обобщено на три команды. В общем, необходимо сохранить %nnn
спецификацию заданий для команды, которая только что была просмотрена в фоновом режиме. Это может быть сделано чем-то вроде jobs | sed -e '$!d' -e 's/^\[\([0-9]\+].*$/%\1/
, но должен быть лучший способ.