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

rgr*_*rgr 113 history bash-history

有没有办法保存我输入的所有终端命令并像在日志中查看历史记录一样查看它?

s3l*_*lph 141

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

cat ~/.bash_history
less ~/.bash_history
...any other pager or output command...
Run Code Online (Sandbox Code Playgroud)

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

history
Run Code Online (Sandbox Code Playgroud)

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

rm ~/.bash_history && history -c
Run Code Online (Sandbox Code Playgroud)

历史记录大小默认为 500 个命令。但是,您可以通过在~/.bashrc文件中添加一行来设置HISTSIZE变量来增加它:

HISTSIZE=<number of entries, -1 for unlimited>
Run Code Online (Sandbox Code Playgroud)

这不会立即生效,只会对新开始的会话生效。要应用它,请重新获取.bashrc文件:

. ~/.bashrc
Run Code Online (Sandbox Code Playgroud)

HISTSIZE=...在当前会话中运行。

  • 默认情况下,它只保留最新的 500 个命令。您可以更改要保留的号码,但您只需不小心使用默认设置启动一次,您的所有旧历史记录都将消失。 (2认同)

0x2*_*fa0 45

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


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

history 5
Run Code Online (Sandbox Code Playgroud)

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

history | grep mv
Run Code Online (Sandbox Code Playgroud)

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

假设我有这样的历史:

1 ls -la
2 mkdir foo
3 mv bar.txt foo
Run Code Online (Sandbox Code Playgroud)
  • 要运行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

  • 您也可以在键入时按 Ctrl-R 在主机中执行搜索。 (3认同)

Bil*_*lal 14

只需输入:

history > print.txt
Run Code Online (Sandbox Code Playgroud)

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

  • 在 1000 之后切断命令 (5认同)

小智 5

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

在此输入图像描述

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