+/- depois que um trabalho em segundo plano é feito

19

Executar um trabalho em segundo plano

$ command &

Quando terminar, o terminal imprime

[n]+    command

ou

[n]-    command

Então, às vezes, é uma vantagem e outras vezes é menos depois de [n] .

O que significa mais / menos?

    
por Lee 30.08.2016 / 16:06

2 respostas

17

Eles devem distinguir entre o trabalho atual e o anterior; o último trabalho e o segundo último trabalho para mais de dois trabalhos, com + para o último e - para o segundo último.

De man bash :

The previous job may be referenced using %-. If there is only a single job, %+ and %- can both be used to refer to that job. In output pertaining to jobs (e.g., the output of the jobs command), the current job is always flagged with a +, and the previous job with a -.

Exemplo:

$ sleep 5 &
[1] 21795

$ sleep 5 &
[2] 21796

$ sleep 5 &
[3] 21797

$ sleep 5 &
[4] 21798

$ jobs
[1]   Running                 sleep 5 &
[2]   Running                 sleep 5 &
[3]-  Running                 sleep 5 &
[4]+  Running                 sleep 5 &

$ 
[1]   Done                    sleep 5
[2]   Done                    sleep 5
[3]-  Done                    sleep 5
[4]+  Done                    sleep 5
    
por 30.08.2016 / 16:15
2

Suponho que você esteja se referindo a quando você verifica as tarefas via $jobs . No entanto, como você provavelmente já sabe, n indica o trabalho #. O [n] + indica o trabalho final que foi chamado. [n] - indica o segundo ao último trabalho que é chamado.

Por exemplo:

chris@chris-VirtualBox:~$ sleep 30 &
[1] 904
chris@chris-VirtualBox:~$ sleep 50 &
[2] 972
chris@chris-VirtualBox:~$ jobs
[1]-  Running                 sleep 30 &
[2]+  Running                 sleep 50 &

É por isso que, neste caso, nosso sleep 50 & é o último: [2]+ e sleep 30 & é o penúltimo: [1]-

    
por 30.08.2016 / 16:25