2012-04-17 85 views
10

我定製我的zsh的提示,發現以下,以檢查是否有任何的後臺作業:zsh的提示 - 檢查是否有任何的後臺作業

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 

我面臨的問題是,代碼似乎只有在我打開一個新的會話時才被評估,而不是在每個命令使得這個沒用之後。如何在每個命令後重新評估number_jobs

回答

24

zsh有一個特殊的提示序列,如C三元運算符。下面的構造意味着如果有一個或多個工作,然後打印他們的號碼或什麼都不打印:

%(1j.%j.) 
+0

奇妙地工作!謝謝。 – 2012-04-17 15:33:23

+0

1j部分表示「如果有一項工作」或「如果有多項工作」? (原諒我對C的無知,我對這一切都是陌生的) – 2012-04-17 15:38:15

+0

任何數量的工作(1,2,更多) – yazu 2012-04-17 15:40:31

相關問題