当前会话的bash历史记录


15

也许我忽略了一些事情,但是有没有办法像您正在使用的当前会话那样获取您当前的bash历史记录

如果我跑

ssh host
$ pwd
$ ls
$ cd /tmp

我只想看那三个命令,别无其他


你检查history命令了吗?
Hackaholic 2014年

是的,我知道,history但这不只是我的课程
Mike

我记得,会话之间保存的数量由SAVEHIST shell变量控制。因此,如果您上次保存的历史记录的数量
为零

@mdpc,您正在阅读什么文档?在Bash手册页中,我找不到对SAVEHIST的引用,而仅涉及到HISTSIZEHISTFILESIZE
通配符

Answers:


15

稍微回旋的方式:

history -a ~/current_history

这会将当前会话的未保存的bash历史记录保存到~/current_history,然后您可以查看。


这可以工作,但不能处理多个会话。.我想我可以创建一个随机的临时文件来存储在其中
Mike

1
@Mike可能使用与外壳PID连接的名称~/$$_history
muru 2014年

4
值得注意的是,这不会清除历史记录或以任何方式影响正常的历史记录保存!在测试之前,我不确定。:)
NHDaly 2015年

我发现history -a将它与以前的历史记录一起放入〜/ .bash_history ...会更方便,如果您的历史记录比截止时间长(在我的centos7和fedora 24系统上为1000),则可能会出现问题。
雷·福斯

0

我有问题,我想当前写入history到一个文件,但仍然希望被记录在主猛砸项history

我解决了这个仅由安装文件cat

history -a current-history
cat current-history >> .bash_history

-1

使用comp与已经坚持历史比较的整个历史(包括当前bash命令。)在.bash_history和只打印那些独特当前会话行-这应该只显示自开始当前Bash shell中已执行这些命令

comm -23 <( history | cut -c 8- ) ~/.bash_history

编辑:正如@Wildcard指出,此命令不适用于的所有发行版comm。我在Mac OS上进行了测试。

相同想法的变体,使用diff

diff <( history | cut -c 8- ) ~/.bash_history | sed -n 's/^< //pg'

一个很好的想法,但是在我的测试中非常不可靠。 comm假设输入已排序。 但是,欢迎来到Stack Exchange!:)
通配符

@Wildcard,comm在上面的示例中,输入的两面都是固有排序的。你跑了吗?它没有产生您当前的Bash会话历史记录吗?
Christian Kadner'2

是的,我做到了,不,没有。不,内容~/.bash_history排序; history一旦删除前导行号,也不会对输出进行排序。(除此以外,comm期望按字典顺序输入,而不是数字输入。)
通配符

是的,我的意思是comm示例中命令的两个参数的顺序相同,而不是按字典顺序排序。FreeBSD的版本comm不需要按字典顺序排序的输入
Christian Kadner'1

我使用的是Mac OSX。与此无关。仔细观察,似乎是内存历史记录中的早期命令,此后此命令已被其他退出的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.