2010-12-16 49 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)' – 2017-01-30 16:51:32

回答

48

的位置在哪裏,你想退出代碼出現PS1補充一點:

%(?..[%?]) 

這是一個條件表達式。如果第一個點之前的表達式爲真,則輸出兩個點之間的部分(本例中不包含任何內容)。如果第二個點是假的,則輸出第二個點之後的部分。

例如:

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

或者,您可以:

setopt PRINT_EXIT_VALUE 

總是打印顯示前一個返回值換行符。

我不喜歡這個用於普通用途,但它通常用於調試shell腳本。