如何在Ubuntu的多个终端会话中查看Bash历史记录?[重复]


11

可能重复:
历史文件可以在bash中统一吗?

我使用Ubuntu Server 9.10,我希望能够查看多个终端会话的bash历史记录。也就是说,即使我之间已经注销,我最近的200条左右命令也是如此。

当我使用时,history我只是从实际终端会话中看到所有命令。我如何从Bash查看更多命令历史记录?我应该从Ubuntu的默认值更改bash的任何特定设置吗?

我没有~/.bash_history档案。但我有一个~/.bashrcHISTCONTROL=$HISTCONTROL${HISTCONTROL+,}ignoredupsHISTCONTROL=ignoreboth

echo $HISTFILE
/home/sanoj/.bash_history
echo $HISTSIZE
500
echo $HISTFILESIZE
500
echo $HISTCONTROL
ignoreboth

更新:我现在正在VirtualBox中尝试Ubuntu Server 10.10。如果仅关闭VirtualBox而没有shutdown命令,则下次启动时,上次会话中的命令不会保存在历史记录文件中。

仅当我使用shutdown命令关闭计算机时,才会保存命令。例如shutdown -P 0。

这一定是我遇到问题的原因。因此,我必须弄清楚如何更频繁地保存命令历史记录。例如,在每个命令之后。


你明白了什么,如果你做的echo $HISTSIZEecho $HISTFILESIZE?我的(Ubuntu)与您的行~/.bashrc相同HISTCONTROL,由于第二行优先于第一行,因此脑死亡,并且值应该用冒号分隔,而不用逗号分隔。如果这样做set -o,它会显示一行“ history on”吗?
暂停,直到另行通知。

我同时了解500echo两个变量以及history on
乔纳斯(Jonas)2010年

第二个HISTCONTROL语句是您得到的,而不是第一个。虽然ignorebothbashupups + ignorespace的 bash速记,所以这可能不是问题。
quack quixote 2010年

1
这是一个重复:superuser.com/questions/37576/...
沃伦

1
@warren:很高兴找到。我同意,看来正是Sanoj要求的。
quack quixote

Answers:


6

您可以使用

history -a

立即将内存中的历史记录附加到历史记录文件。除非已完成或退出了另一个会话,否则一个会话看不到另一个会话。

您可以使用

history 200 | less

查看该条目数。

另外,HISTSIZE请参阅Bash手册页中有关的条目HISTFILESIZE


history -a´ doesn't do anything for me, and not 历史200 | 较少`,但我已用更多信息更新了我的问题。不管怎么说,还是要谢谢你。
乔纳斯(Jonas)2010年

我想我已经找到了原因。除非执行干净关机,否则不会保存历史记录。看到我的新问题:unix.stackexchange.com/questions/3330/…–
乔纳斯(Jonas)

6

注销后,历史记录将附加到文件中~/.bash_history。在那里看看。

默认情况下,它将记住您最近的500个命令。如果要保存更多,请HISTSIZE在中设置变量~/.bashrc

我也确实将添加ignoredupsHISTCONTROL(带有HISTCONTROL=$HISTCONTROL:ignoredup)。这使得重复的连续命令只能保存一次。

看看man 1 bash您还可以对历史进行哪些调整。


感谢您的回复。但是我没有~/bash_history文件,也没有HISTSIZE~/.bashrc但是我有HISTCONTROL=$HISTCONTROL${HISTCONTROL+,}ignoredupsand HISTCONTROL=ignoreboth,那就是Ubuntu Server。
乔纳斯(Jonas)2010年

1
@Snoj注意.中的~/.bash_history。对于HISTSIZE它,将只使用默认值500个条目。
本杰明·班尼尔

是的,但是~/.bash_history我的系统上没有文件。我曾经ls -a检查。
乔纳斯(Jonas)2010年

@Sanoj所以它可能不是默认值。文件名存储在$HISTFILE变量中,因此echo $HISTFILE会告诉您在哪里查找。
本杰明·班尼尔

echo $HISTFILE给我/home/sanoj/.bash_history-很奇怪。也许由于安全原因未激活它?
乔纳斯(Jonas)2010年


0

Sanoj,这确实应该“行之有效”;我不认为您需要采取任何特殊措施来实现这一目标。听起来有些事情正在干扰正常的事件进程。

我会在/ etc / profile,/ etc / bashrc(或者根据某些来源可能是/etc/bash.bashrc)、~/.bash_profile、~/.bashrc、~/.bash_login、~/.bash_logout中查看是否有任何可能影响历史记录的内容(可能grep -i hist在上述每个文件中)。

...特别是我想知道您是否在〜/ .bash_logout中删除了文件。

或者,是否有可能覆盖某些$HOME变量?

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.