我查看了一下~/.bash_history
,可以看到我执行过的所有命令,甚至包括那些有拼写错误的命令。有没有办法只保存已成功的命令(即退出代码0)?
注意:我使用的是 bash 和 zsh。
答案1
将其保存在您的~/.bashrc
文件中
good_history(){
exit_status=$?
if ((!exit_status)); then
history 1 >> history.txt
fi
}
export PROMPT_COMMAND="good_history"
~/.bashrc
源运行之后source ~/.bashrc
上面的构造是函数定义,
function_name() { command_goes_here; }
只有退出的命令
0
才会保存在文件中history.txt
就 shell 而言,退出状态
0
为成功,其余为失败。内置变量
$?
保存最后执行的命令的最后退出状态,无论是否交互。在数学上下文中,使用 bash
0
是失败的,而1
使用 the 时则是成功的,(( ))
因此我们否定使用 bang!
字符,请参阅help test
是
>>
附加到该东西所指向的任何地方,在本例中是附加到文件。PROMPT_COMMAND
请参阅 bash 手册中有关变量尝试在 shell 会话中运行的部分PAGER='less +/^[[:space:]]*PROMPT_COMMAND' man bash
您可能需要也可能不需要,
export
但我不确定您的shellrc
文件中有什么设置,所以它就在那里。- 等待有人使用
zsh