Tim*_*Tim 2 bash command-history
在 bash shell 中,当我运行 时history
,它提供所有命令的历史记录,不仅是在当前 shell 中键入的命令,还包括在先前 shell 中键入的命令的历史记录。到目前为止,如何获取仅在当前 shell 中键入的命令的历史记录?当您想查找已知已在当前 shell 中键入的命令时,这很有用。谢谢。
只要histappend没有设置,没有游戏玩得PROMPT_COMMAND的历史命令:
-a 追加“新”历史行(输入的历史行 从当前 bash 会话开始)到 历史文件。
如果我们想让我们的真实历史文件不受伤害,我们可以这样做:
$猫.bash_history #1482030925 ls #1482030926 日期 #1482030928 自由 $ echo "还有一个命令" 多一个命令 $ echo "另一个命令" 另一个命令 $ HISTFILE=foo history -a $猫福 #1482031879 猫 .bash_history #1482031887 回声“还有一个命令” #1482031892 回声“另一个命令” #1482031899 HISTFILE=foo 历史记录 -a
来自早期会话(ls、date、free)的先前命令没有出现在我们的“新”历史文件中,foo
- 我希望这个例子能说明这一点。
另一种方法是保存当前历史文件(在登录会话开始时!),然后将当前会话的历史记录附加到历史文件(通过运行“history -a”或通过注销),然后比较两者文件:
$历史> hist.backup $ echo "一个新命令" 一个新命令 $ echo "还有一个命令" 多一个命令 $ 历史 > hist.current $ diff hist.{backup,current} 4a5,7 > 5 2016-12-17 19:38:57 回声“一个新命令” > 6 2016-12-17 19:39:01 回声“还有一个命令” > 7 2016-12-17 19:39:07 历史 > hist.current
注意:我非常喜欢设置HISTTIMEFORMAT='%F %T '
(在 bash 3, IIRC 中引入),时间戳有助于找出命令何时执行。