我想知道是否有任何命令或其他方法可以仅在当前会话中检查我的命令历史记录。
答案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
,但ksh
和mksh
有的是HISTFILE
环境变量(bash
也有,因为bash
包含了很多ksh
功能);顺便说一句,这个变量默认没有设置(至少mksh
在 Ubuntu 上没有设置它)。所以,为了将当前会话输出到其他文件,我们调用HISTFILE
prepended 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
)。
壳牌中立的方法是使用现有工具记录您的会话 或者编写自己的函数根据每个命令进行记录。