Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 指定在前一个命令失败时要运行的命令的方法_Linux_Bash_Terminal_Gnome Terminal - Fatal编程技术网

Linux 指定在前一个命令失败时要运行的命令的方法

Linux 指定在前一个命令失败时要运行的命令的方法,linux,bash,terminal,gnome-terminal,Linux,Bash,Terminal,Gnome Terminal,是否可以从CLI捕获错误(未知命令),并在发生错误时采取措施 更确切地说,我在寻找一种方法来做这样的事情: 如果[previousCommandFails];然后 echo lastCommand>>某处.txt fi Echo只是一个例子,说明我需要访问这个last命令 我希望这是我的计算机中的默认行为,因此代码必须放在类似~/.bashrc的位置,这取决于您所称的失败。如果它只是返回一个非0值,恐怕您必须在每个命令后对其进行明确的测试,或者使用专门的shell(*) 但是trap可用于在接

是否可以从CLI捕获错误(
未知命令
),并在发生错误时采取措施

更确切地说,我在寻找一种方法来做这样的事情:

如果[previousCommandFails];然后
echo lastCommand>>某处.txt
fi
Echo只是一个例子,说明我需要访问这个last命令


我希望这是我的计算机中的默认行为,因此代码必须放在类似
~/.bashrc
的位置,这取决于您所称的失败。如果它只是返回一个非0值,恐怕您必须在每个命令后对其进行明确的测试,或者使用专门的shell(*)

但是
trap
可用于在接收到信号时执行特定命令:

trap action signal

如果这还不够,您必须获取shell的源代码(posix shell或bash),并对其进行调整以满足您的需要…

您可以尝试以下解决方案。我不能保证这是一个好的解决方案,但它可能会帮助你的情况

创建一个小脚本,用于测试上一个命令,即
test.sh
,内容如下:

if[$?-ne 0]
然后
历史记录1>>/path/to/failed_commands.txt
fi

然后设置此变量:

PROMPT\u命令+=“source/path/to/test.sh”

PROMPT_命令如果设置,该值将作为命令在 发出每个主提示


我应该看看
陷阱
,谢谢!我希望它能更准确地捕获
未知命令
。在将该命令与
命令-v
一起使用之前,您应该检查该命令是否存在。可能的副本等。