Zsh包括使用%?
转义序列在提示中显示上一个命令的返回码/退出代码的功能。
但是我想提出以下提示:
user@host ~ [%?] %
当退出代码与0不同时:
user@host ~ %
退出代码为0时。
如果我单独使用%?
,即使%?
为0,也会始终显示。
另外我想要方括号,但仅当退出代码不是0时。
最简单的方法是什么?
答案 0 :(得分:54)
将此添加到PS1
中您希望显示退出代码的位置:
%(?..[%?] )
这是一个条件表达式。如果第一个点之前的表达式为真,则输出两个点之间的部分(在这种情况下不是)。如果它是假的,则输出第二个点之后的部分。
例如:
PS1='%n%m %~ %(?..[%?] )%# '
答案 1 :(得分:11)
或者,您可以:
setopt PRINT_EXIT_VALUE
始终打印显示上一个返回值的换行符。
我不喜欢将它用于普通用途,但它通常适用于调试shell脚本。