提示错误代码

提示错误代码

目前我有!正确的提示如下:

export RPS1="%B%F{red}!%f%b"

当我使用,并且命令历史记录没有在整个窗格中同步(不幸的是),这些数字对我来说几乎毫无用处。

我尝试RPS1设置?$?显示返回码/错误级别命令但没有成功。

我记得我必须设置:

setopt promptbang

进行!插值(解释、扩展)。

如何在命令行右侧实现这样的提示,指示上一个命令的结果为错误号。

在此输入图像描述

我当前提示的示例屏幕截图包含>>>!as $PS1$PS2、 和$RPS1

答案1

为了显示上一个命令的返回状态,您可以使用迅速逃脱 %?

RPS1='%B%F{red}%?%f%b'

您甚至可以根据退出状态切换颜色:

RPS1='%B%(?.%F{green}.%F{red})%?%f%b'

或者,如果命令返回错误,则仅显示任何内容:

RPS1='%(?..%?)'

%?如果计算结果为,则输出为绿色0,否则为红色。


为了替换任意参数(例如$?),您需要启用该PROMPT_SUBST选项:

setopt promptsubst

在这种情况下,您需要充分引用参数以防止它在声明时被替换。例如,使用单引号或使用$内部\双引号进行引用。

RPS1='$?'
RPS1="\$?'

顺便说一句:无需导出RPS1(或任何其他 shell 配置参数)即可使其生效。

答案2

只需将其放入${?##0}PS1想要显示非零退出代码的位置即可。如果前一个命令的退出代码为零,它将被截断为空字符串(0删除所有前导零就是空字符串)。

user@host:~
$ bash
user@host:~
$ exit 4
logout
user@host:~ 4
$ 

在我的相关部分中PS1,我有\e[31m${?##0}\n\[\e[$(((($?>0))*31))m\]。如果上一个命令的退出代码非零,则将其显示为红色。

相关内容