gpt4 book ai didi

bash - 检查上一个命令是否为 "valid"

转载 作者:行者123 更新时间:2023-11-29 08:55:32 25 4
gpt4 key购买 nike

我在 .bashrc 中定义了一个函数,它显示上一个命令是否成功完成(从 the full version 简化):

function previous_command_status()
{
if [ $? -eq 0 ]; then
echo "Command successful"
else
echo "Command failed with exit code $exit_code"
fi
}

PROMPT_COMMAND="previous_command_status"

问题是,当我开始提示时,Command successful 立即显示,即使我还没有“正式”运行任何命令。其次(出于同样的原因),脚本显示 Command successful(或最后一个“真实”命令的输出),即使我所做的只是按下返回按钮而没有实际执行命令( example output ).

如何让脚本仅在命令实际运行时才显示消息?

最佳答案

正如其他人所提到的,不需要在提示中显示这么长的消息。以下是我正在使用的 Bash 提示符:

The screenshot

如您所见,提示中的退出值在非零时变为红色,因此您可以轻松知道命令刚刚失败。如果命令被信号终止,信号编号​​和名称也会显示。在上面的屏幕截图中,130:2:INT 表示最后一个命令以 130 (= 128 + 2) 退出并被信号 2 (SIGINT).

bashrc中的代码如下:

function _PS1_command()
{
local lastexit=$?
local ESC=$'\033'

(( lastexit )) && g_PS1_Qcolor="$ESC[1;31m" || g_PS1_Qcolor=

g_PS1_signal=
if (( lastexit > 128 )) && kill -l $(( lastexit - 128 )) > /dev/null
then
(( g_PS1_signal = lastexit - 128 ))
g_PS1_signal="$g_PS1_signal:$( kill -l $g_PS1_signal )"
fi

return $lastexit
}

PROMPT_COMMAND=_PS1_command
PS1='[\w $g_PS1_Qcolor$?${g_PS1_signal:+:}$g_PS1_signal\e[0m] # '

关于bash - 检查上一个命令是否为 "valid",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25149782/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com