2012-04-17 22 views
10

tôi tùy biến nhanh chóng zsh của tôi và đã tìm thấy những điều sau đây để kiểm tra nếu có bất kỳ công việc nền:zsh nhắc - kiểm tra nếu có bất kỳ công việc nền

if [[ $(jobs | wc -l) -gt 0 ]]; then # has background job(s) 
    number_jobs='J:${cyan}%j${no_color}' 
else # no background job(s) 
    number_jobs="" 
fi 

Vấn đề tôi đang phải đối mặt là sự mã xuất hiện để được đánh giá chỉ khi tôi mở một phiên mới hơn là sau mỗi lệnh làm điều này khá vô dụng. Làm thế nào tôi có thể có được number_jobs được đánh giá lại sau mỗi lệnh?

Trả lời

24

zsh có một chuỗi dấu nhắc đặc biệt, chẳng hạn như toán tử ternary C. Cấu trúc bên dưới có nghĩa là nếu có một hoặc nhiều công việc, sau đó in số của chúng hoặc in không có gì:

%(1j.%j.) 
+0

Hoạt động tuyệt vời! Cảm ơn bạn. –

+0

Tiểu bang có phần 1j "nếu có một công việc" hay "nếu có nhiều hơn một công việc"? (xin lỗi về sự thiếu hiểu biết của tôi về C, tôi mới cho tất cả điều này) –

+0

bất kỳ số lượng việc làm nào (1, 2, nhiều hơn) – yazu