2010-12-16 12 views
32

प्रदर्शित करते समय zsh के प्रॉम्प्ट को कस्टमाइज़ करें Zsh में %? एस्केप अनुक्रम का उपयोग कर प्रॉम्प्ट में पिछले कमांड के रिटर्न कोड/एक्ज़िट कोड को प्रदर्शित करने की क्षमता शामिल है।पिछले कमांड निकास कोड

हालांकि मैं चाहूँगा प्रॉम्प्ट का पालन करने के लिए:

[email protected] ~ [%?] % 

जब बाहर निकलने के कोड 0 से भिन्न है और:

[email protected] ~ % 

बाहर निकलें कोड है जब 0.

अगर मैं %? अकेले उपयोग करें, यह हमेशा प्रदर्शित होता है, भले ही %? 0. इसके अलावा मैं स्क्वायर ब्रैकेट चाहता हूं लेकिन केवल बाहर निकलने पर कोड 0

ऐसा करने का सबसे आसान तरीका क्या है?

+0

मेरे प्रॉम्प्ट के लिए बढ़िया जोड़ा। जो मैंने वर्तमान में robbyrussell विषय में अनुकूलित किया है: PROMPT = '$ {ret_status}% {$ fg [cyan]%}% n @% m:% 4 ~% {$ reset_color%} $ (git_prompt_info)' –

उत्तर

48

PS1 जहां बाहर निकलने के कोड प्रकट करना चाहते हैं में स्थिति में इस जोड़ें:

%(?..[%?]) 

यह एक सशर्त अभिव्यक्ति है। दो बिंदुओं (इस मामले में कुछ भी नहीं) के बीच का हिस्सा आउटपुट है यदि पहले बिंदु से पहले अभिव्यक्ति सत्य है। दूसरे बिंदु के बाद भाग आउटपुट है अगर यह गलत है।

उदाहरण के लिए:

PS1='%n%m %~ %(?..[%?])%# ' 
10

वैकल्पिक रूप से, आप कर सकते हैं:

setopt PRINT_EXIT_VALUE 

हमेशा पिछले वापसी मान दिखा एक नई पंक्ति मुद्रित करने के लिए।

मैं इसे सामान्य उपयोग के लिए पसंद नहीं करता, लेकिन यह अक्सर शैल स्क्रिप्ट को डीबग करने के लिए अच्छा होता है।

संबंधित मुद्दे