仅当退出代码为 0 时才保存命令行历史记录

仅当退出代码为 0 时才保存命令行历史记录

我查看了一下~/.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为成功,其余为失败。

  • 内置变量 $?保存最后执行的命令的最后退出状态,无论是否交互。

  • 在数学上下文中,使用 bash0是失败的,而1使用 the 时则是成功的,(( ))因此我们否定使用 bang!字符,请参阅help test

  • >>附加到该东西所指向的任何地方,在本例中是附加到文件。

  • PROMPT_COMMAND请参阅 bash 手册中有关变量尝试在 shell 会话中运行的部分PAGER='less +/^[[:space:]]*PROMPT_COMMAND' man bash

  • 您可能需要也可能不需要,export但我不确定您的shellrc文件中有什么设置,所以它就在那里。

  • 等待有人使用zsh

相关内容