2010-12-16 110 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脚本。