Tôi biết rằng $!
lưu trữ pid của quá trình (nền) cuối cùng, nhưng điều đó %1
có nghĩa là gì? Tôi thường thấy nó cùng với kill
và nó có tác dụng tương tự kill $!
. Ai đó có thể cho tôi một gợi ý? (Các thuật ngữ nhỏ như vậy rất khó để google: - /)
Tôi biết rằng $!
lưu trữ pid của quá trình (nền) cuối cùng, nhưng điều đó %1
có nghĩa là gì? Tôi thường thấy nó cùng với kill
và nó có tác dụng tương tự kill $!
. Ai đó có thể cho tôi một gợi ý? (Các thuật ngữ nhỏ như vậy rất khó để google: - /)
Câu trả lời:
Trình %
chỉ định đề cập đến các công việc trong danh sách công việc của shell hiện tại và trả về PID. Hãy thử help jobs
.
man kill
cung cấp cho trang man cho một lệnh giết bên ngoài mà không nói gì %
. Nhưng bash cũng được tích hợp sẵn kill
vì nó được ưu tiên so với bên ngoài kill
và help kill
cho chúng ta biết rằng chúng ta có thể sử dụng các jobspec với tích hợp sẵn kill
và việc có thể sử dụng các jobspec là một trong những lý do tại sao nó là một được xây dựng trong.
Những gì bạn muốn Google là man bash
Có một số cách để đề cập đến một công việc trong vỏ. Tỷ lệ% giới thiệu một tên công việc. Số công việc n có thể được gọi là% n. Một công việc cũng có thể được gọi là sử dụng tiền tố của tên được sử dụng để bắt đầu nó hoặc sử dụng một chuỗi con xuất hiện trong dòng lệnh của nó. Đối với bài kiểm tra,% ce đề cập đến một công việc ce đã dừng. Nếu một tiền tố phù hợp với nhiều công việc, bash báo lỗi. Mặt khác, sử dụng%? Ce, đề cập đến bất kỳ công việc nào chứa chuỗi ce trong dòng lệnh của nó. Nếu chuỗi con khớp với nhiều công việc, bash báo lỗi. Các ký hiệu %% và% + đề cập đến khái niệm của công việc hiện tại, đây là công việc cuối cùng dừng lại khi nó ở phía trước hoặc bắt đầu ở phía sau. Công việc trước đó có thể được tham chiếu bằng% -. Khi chỉ có công việc hiện tại,% - đề cập đến khái niệm của công việc hiện tại. Trong đầu ra liên quan đến công việc (ví dụ: đầu ra của công việc), công việc hiện tại luôn được gắn cờ với dấu + và công việc trước đó có dấu -. Một% duy nhất (không có đặc tả công việc đi kèm) cũng đề cập đến công việc hiện tại.
Đơn giản chỉ cần đặt tên một công việc để đưa nó vào nền trước:% 1 là từ đồng nghĩa với '' fg% 1 '', đưa công việc 1 từ nền vào nền trước. Tương tự, ''% 1 & '' tiếp tục công việc 1 trong nền, tương đương với '' bg% 1 ''.
TL; DR: %1
là công việc số 1.