+/- po zakończeniu pracy w tle

21

Uruchom zadanie w tle

$ command &

Po zakończeniu terminal drukuje

[n]+    command

lub

[n]-    command

Więc czasami jest to plus, a innym razem minus [n].

Co oznacza plus / minus?

Zawietrzny
źródło

Odpowiedzi:

19

Mają rozróżniać bieżącą i poprzednią pracę; ostatnia praca i druga ostatnia praca dla więcej niż dwóch prac, z +ostatnią i -drugą ostatnią.

Od man bash:

Do poprzedniego zadania można się odwołać za pomocą %-. Jeśli istnieje tylko jedno zadanie %+i %-można je wykorzystać w odniesieniu do tego zadania. W danych wyjściowych dotyczących zadań (np. Danych wyjściowych polecenia zadań) bieżące zadanie jest zawsze oznaczane za pomocą a +, a poprzednie zadanie za pomocą -.

Przykład:

$ 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
heemayl
źródło
2

Zgaduję, że masz na myśli, kiedy sprawdzasz zlecenia za pośrednictwem $jobs. Jednak, jak zapewne już wiesz, noznacza pracę #. [n] +Oznacza ostateczną pracę, która została wywołana. [n] -oznacza od drugiego do ostatniego zadania, które się nazywa.

Na przykład:

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 &

Dlatego w tym przypadku nasza sleep 50 &jest ostatnia: [2]+i sleep 30 &przedostatnia:[1]-

Klamz
źródło
Twój opis sytuacji jest niejasny, a system nie przewiduje, które zadanie zakończy się jako pierwsze.
Julie Pelletier
Rozumiem, co masz na myśli, podkreślę główny punkt
Klamz