有什么方法可以只检查当前会话的历史记录?


10

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

Answers:


12

当与标志一起使用时,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做,但什么kshmksh做的有是HISTFILE环境变量(和bash有,也因为bash包含大量的ksh功能); 顺便说一句,默认情况下未设置此变量(至少mksh在Ubuntu上未设置)。因此,为了将当前会话输出到其他文件,我们调用HISTFILEprepended到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输出带有特殊字符的历史记录,而不是纯文本bash。因此,您可能需要使用打开该文件ksh

至于 Ubuntu上POSIX /bin/shshell(即Debian Almquist Shell或Dash),则fc内置了。但是,在Ubuntu上,破折号是在没有lib-edit的情况下编译的,出于性能原因,这是Ubuntu开发人员的明智选择,因此fc其他需要进行行编辑的模式 也无法立即使用(除非重新编译dash并安装lib-edit)。


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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.