显示上一个命令退出代码时自定义zsh的提示

时间:2010-12-16 23:07:04

标签: zsh exit-code

Zsh包括使用%?转义序列在提示中显示上一个命令的返回码/退出代码的功能。

但是我想提出以下提示:

user@host ~ [%?] %

当退出代码与0不同时:

user@host ~ %
退出代码为0时

如果我单独使用%?,即使%?为0,也会始终显示。 另外我想要方括号,但仅当退出代码不是0时。

最简单的方法是什么?

2 个答案:

答案 0 :(得分:54)

将此添加到PS1中您希望显示退出代码的位置:

%(?..[%?] )

这是一个条件表达式。如果第一个点之前的表达式为真,则输出两个点之间的部分(在这种情况下不是)。如果它是假的,则输出第二个点之后的部分。

例如:

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

答案 1 :(得分:11)

或者,您可以:

setopt PRINT_EXIT_VALUE

始终打印显示上一个返回值的换行符。

我不喜欢将它用于普通用途,但它通常适用于调试shell脚本。

相关问题