查看终端中运行的命令的历史记录

有没有办法保存所有类型的终端命令,并在日志中查看历史记录?

这是自动完成的。 Bash将您的命令存储在~/.bash_history 。 如果要查看历史记录,请使用以下方法之一打印此文件的输出

 cat ~/.bash_history less ~/.bash_history ...any other pager or output command... 

或者你可以使用bash的内置命令:

 history 

要清除历史记录,请删除该文件并清除临时历史记录:

 rm ~/.bash_history && history -c 

历史记录大小默认为500个命令。 但是,您可以通过在~./bashrc添加以下行来增加此值:

 HISTSIZE= 

这不会立即生效,只会对新启动的会话生效。 要应用此function,请为.bashrc文件提供资源:

 . ~/.bashrc 

或者在当前会话中运行HISTSIZE=...

您可以在终端上键入history以查看以前执行的所有命令。


您可以将输出截断为某些行(其中5是行数):

 history 5 

如果您只想查看包含字符串的命令(即mv ),您可以这样做:

 history | grep mv 

您可以通过键入来调用命令! 然后是条目号。

比方说我有这样的历史:

 1 ls -la 2 mkdir foo 3 mv bar.txt foo 
  • 要运行mkdir foo ,可以键入!2
  • 要运行最后一个命令,可以使用!-1!!
  • 要运行倒数第二个,您可以使用!-2

如果你运行的命令失败,因为它需要root权限(即touch /etc/foo ),你可以使用sudo !! 以root身份运行最后一个命令。


  • 如果你键入!man你将执行以man开头的最后一个命令
  • 如果你打字!?man? 它将执行包含man的最后一个命令(不一定在行开始时)

如果命令中有拼写错误,您可以通过这种方式修复它。 假设我输入cat .bash_hi ,用.bash_hi替换.bash_history我只需要键入^hi^history^


资料来源: https //www.digitalocean.com/community/tutorials/how-to-use-bash-history-commands-and-expansions-on-a-linux-vps

只需输入:

 history > print.txt 

将在您当前工作的目录中创建一个名为print.txt的新文件。

我经常只想要那些最近的命令。 要发布到我的开发说明,或者像这些堆栈交换站点…这已被certificate非常有用,删除不相关的行号:

 history | cut -c 8- | tail 

或者,如果您喜欢它作为别名,删除行号,并立即缩进(正如代码引号降价所需)

 alias lastones="history | tail | sed -e 's/^ [0-9]\{1,5\} / /gi'" 

您可以尝试https://github.com/dvorka/hstr ,它允许简单的浏览 ,导航和“建议框样式”过滤您的Bash历史记录:

在此处输入图像描述

它可以很容易地绑定到Ctrl-r和/或Ctrl-s