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

Modified on: Sun, 10 Jun 2018 02:23:23 +0800

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

作者:Zanna,Andrew

最佳答案

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(写入文件opion的历史记录)将整个历史记录写入指定文件,因此-a(追加)这里是首选。


还有其他手动方式。特别是ksh没有-a标志,如bash那样,但kshmkshHISTFILE环境变量(而bash也有,因为bash包含了很多ksh功能);顺便说一句,默认情况下不设置此变量(至少在Ubuntu上mksh没有设置它)。因此,为了将当前会话输出到其他文件,我们调用前面的HISTFILE命令,在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输出带有特殊字符的历史记录,而不是bash所做的纯文本。因此,您可能希望使用ksh打开该文件。

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


Shell中立的方式是使用现有工具记录您的会话编写自己的函数以按命令记录。


相关问答

添加新评论