许多 Linux 服务器的管理员需要花费大量时间在命令行上,因此查看 history 命令对他们来说是必不可少的。

以 BASH(Bourne Again SHell)为代表的用于与操作系统交互的默认命令行 Shell 在大多数主要的 Linux 发行版中被使用。

什么是 history 命令

history 命令被用于列出以前输入的命令和 Bash 日志。

这个日志被称为 “history” ,它能够使我们快速查看以前在系统上执行的内容。

BASH 将关闭终端会话时所运行的所有命令并写入你的历史记录文件。

1

2

~/.bash_history

 

当你同时运行两个会话的时候,history 命令将单独显示当前的会话记录,而不会显示其他的历史会话记录。

如何查阅历史命令

单独运行 history 命令,无需其他选项就可以查阅先前运行的命令。如果你有大量的历史记录,则无法正确地看到这些记录。在这些情况下,你必须使用诸如 less , more 等的文件视图命令。

如何在 Linux 中有效地使用 history 命令_java

如何查阅最后的“ n ”命令

默认情况下,history 命令显示我们执行的最后1000条命令。如果你只想列出“ n ”个命令,请使用以下命令。例如,显示最近的10个历史记录,请运行以下命令。

history n

如何运行先前执行的命令

  • 使用 UP 和 DOWN 方向键来回滚动用于浏览以前输入的命令。

  • 按 Enter 键执行它们或使用 Left 和 Right 键编辑命令。


重复上一个命令

重复执行你的最后一条命令,请运行以下命令。

!! – Double exclamation point

使用它的编号重复执行先前的命令

使用它的编号重复执行之前的命令。这将会很快地运行先前执行的命令,而不需要再次输入长长的命令。

如何在 Linux 中有效地使用 history 命令_java_02

搜索并运行先前执行的命令

History 命令提供了各种搜索选项,这将允许我们搜索并运行先前执行的命令。

  • 运行在字符串开始处匹配的命令

  • 运行匹配给定字符串的命令

为了能够执行这个操作,这里作者调取了最后30个历史日志来进一步说明。

如何在 Linux 中有效地使用 history 命令_java_03

  • 如果你想运行在字符串开始处匹配的命令,请使用以下格式,它将运行以 doc 字符串开头的最新命令。
    以作者的情况为例,它将运行位于756行的 docker run 命令。


    docker run

如何在 Linux 中有效地使用 history 命令_java_04

  • 如果你想运行匹配给定字符串的命令,请使用以下格式,以作者的情况为例,它将运行以位于754行的 docker ps 命令。

    docker ps

如何在 Linux 中有效地使用 history 命令_java_05

如何替换字符串并运行先前执行的命令

如果你想用新字符串重复上一个命令,只需要将 string1 替换为 string2 即可。(相当于使用以下命令)


1

2

> !!:s/string1/string2/

 


请使用以下格式。首先在下面的例子中,作者以及运行了 Fedora docker image,然后用 CentOS 而不是 Fedora 替换字符串。

如何在 Linux 中有效地使用 history 命令_java_06

如果你想运行先前使用的新字符串执行的任何具体命令,请使用以下任何一种命令格式。

以作者的情况为例。位于821行的 history 命令是 fedora docker 的容器。要想运行 centos 容器,只需将字母替换成 centos 。

如何在 Linux 中有效地使用 history 命令_java_07

使用 grep 命令列出匹配字符串

如果你已经在 docker 运行了很多命令,那么使用 grep 和 docker 命令可以很容易地显示匹配的命令列表。

如何在 Linux 中有效地使用 history 命令_java_08

如何在历史命令中显示日期和时间

默认情况下,history 命令只显示用户执行的命令,不显示日期和时间,但会记录运行命令的时间。

如果你想在 history 命令中输出添加日期和时间,请导航至以下的链接。

Suggested Read : How To Display Date And Time In History Command 

如何使用 YUM 命令来回滚更新

Yum( Yellowdog Update Modified )是 CentOS 和 Red Hat 系统的 RPM 软件包管理工具。Yum 的 history 命令允许管理员将系统回滚到先前的状态,但由于一些限制,回滚在所有的情况下都不起作用,或者 yum 命令可能不会执行任何操作,同时也可能移除您所不期望的包。

Suggested Read : How To Use YUM History Command To Rollback An Updates 

如何查看其他用户的历史记录

使用以下命令查看其他用户记录。


1

2

>  # more /home/$USER/.bash_history

 


如何通过 BASH History 进行搜索

我们可以通过敲击 CTRL-R 键使用关键字搜索先前执行的命令(这将会在历史记录中向后搜索并且优先显示最近的结果)。再次按 CTRL-R 查看下一个结果。


1

2

>   # (reverse-i-search)'dock': docker run -ti centos /bin/bash