有没有办法可以仅检查当前会话的历史记录?

有没有办法可以仅检查当前会话的历史记录?

我想知道是否有任何命令或其他方法可以仅在当前会话中检查我的命令历史记录。

答案1

history内置功能允许bash在与-anrw标志一起使用时指定文件名,以及-a来自状态的标志描述help history

追加历史记录行本届会议到历史文件

因此,我们可以这样做:

~$ history -a this_session.history
~$ cat ./this_session.history 
history mysession.history 
cat mysession.history 
clear
history -a this_session.history

作为记录,-w(将历史记录写入文件选项)写道所有的历史记录到指定的文件,因此-a这里的(附加)是首选。


还有其他手动方式。特别是ksh没有-a标志bash,但kshmksh有的是HISTFILE环境变量(bash也有,因为bash包含了很多ksh功能);顺便说一句,这个变量默认没有设置(至少mksh在 Ubuntu 上没有设置它)。所以,为了将当前会话输出到其他文件,我们调用HISTFILEprepended to command,在 shell 语法中,这意味着使用您指定的附加环境变量运行命令。像这样:

bash-4.4$ HISTFILE='mykshfile.hist' ksh
$ echo 'Hello'
Hello
$ echo 'World'
World
$ 
bash-4.4$ cat ./mykshfile.hist 
�echo 'Hello'
echo 'World'

您还可以从中看到,ksh及其相关的 shell 输出带有特殊字符的历史记录,而不是像 what 那样输出纯文本bash。因此,您可能希望使用 打开该文件ksh

至于/bin/sh Ubuntu 上的POSIX shell,即 Debian Almquist Shell 或 Dash,存在fc内置。 然而,在 Ubuntu 上,dash 编译时无需 lib-edit,这是 Ubuntu 开发人员出于性能原因而有意识的选择,fc因此其他需要行编辑的模式 不能开箱即用(除非重新编译dash并安装lib-edit)。


壳牌中立的方法是使用现有工具记录您的会话 或者编写自己的函数根据每个命令进行记录。

相关内容