如何通过命令行查看`.bash_history`文件?


Answers:


56

如果您要访问的实际文件本身,只用你喜欢的文本编辑器(我用的emacs,但你可以使用plumagedit或者vim或其他):

emacs ~/.bash_history

这是您的历史记录文件的默认位置。如果您在此处找不到任何内容,则可能已更改了历史记录文件的名称。这存储在$HISTFILE变量中,因此将其打印出来以检查其当前值:

echo $HISTFILE

如果您只是想查看历史记录而不是文件,则可以history按照建议的@ minerz029 运行。不带选项history命令仅显示您的内容,$HISTFILE后跟在当前shell中执行但尚未写入该文件的命令(带有行号)。


49

如果你确实需要的输出.bash_history文件,替换history
cat ~/.bash_history在下面的所有命令。

如果您实际上想要前面没有数字的命令,请使用此命令代替history

history | cut -d' ' -f 4-

否则,不会有任何区别(除非您使用其他Shell)。


后15个命令

您可以使用

history | tail -n 15

仅获得历史记录的最后15行,最后执行的行最后打印(在底部)。


搜索命令

或者,使用

history | grep "apt-get" | tail -n 15

以获得包含apt-get最后执行的最后15条命令(最后显示)。您可以替换apt-get为要搜索的任何命令(或命令参数)(可以是正则表达式)。


翻阅历史

您可以使用

history | tac | less

滚动浏览从顶部的最新命令开始执行的所有命令。按q退出。

同样,使用

history | grep "apt-get" | tac | less

滚动浏览所有以“ apt-get” 执行的命令(包括参数),从顶部的最新命令开始。按q退出。


15

除了minerz029的出色答案。

重申一下-“历史记录”命令会打印历史记录及其旁边的数字。

您可以将历史记录的输出传递给grep,less等。

历史输出也在输出旁边的左侧显示一个数字。例如

  469  free
  470  ps -fA
  471  ps -fA | grep xend
  472  free
  473  sudo vi /etc/xen/xend-config.sxp 
  474  cat /etc/default/grub 

使用此编号,您可以重新运行命令。

例如重新运行473,我将输入终端

 admin@xen1~$ !473

然后按Enter键以在历史记录输出中的473旁边重复该命令。

您还可以通过键入ctrl + r键在命令历史记录中向后交互式搜索,然后开始键入命令的某些内容,它将搜索并填写该命令。找到它后,您可以键入Enter以重复该命令,或按键将[tab]其复制到命令行以首先编辑命令。

当然,后两个选项可以在bash shell中使用。我不确定这些功能是否可以在其他外壳中使用。但是由于bash是Ubuntu的默认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.