Câu trả lời:
Họ là để phân biệt giữa công việc hiện tại và trước đây; công việc cuối cùng và công việc cuối cùng thứ hai trong hơn hai công việc, với +
công việc cuối cùng và -
công việc cuối cùng thứ hai.
Từ man bash
:
Các công việc trước đây có thể được tham chiếu bằng cách sử dụng
%-
. Nếu chỉ có một công việc duy nhất%+
và%-
cả hai có thể được sử dụng để chỉ công việc đó. Trong đầu ra liên quan đến các công việc (ví dụ: đầu ra của lệnh công việc), công việc hiện tại luôn được gắn cờ với a+
và công việc trước đó với a-
.
$ 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
Tôi đoán bạn đang đề cập đến khi bạn kiểm tra công việc thông qua $jobs
. Tuy nhiên, như bạn có thể đã biết, n
biểu thị công việc #. Các [n] +
biểu thị công việc cuối cùng đã được gọi.
[n] -
biểu thị công việc thứ hai đến cuối cùng được gọi là.
Ví dụ:
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 &
Đó là lý do tại sao, trong trường hợp này, chúng ta sleep 50 &
là cuối cùng: [2]+
và sleep 30 &
là thứ hai sau cùng:[1]-