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