HOWTO · Bash

Linux 中的 history 命令

本教程展示了使用 history 命令来显示 Bash 历史、在历史中搜索、删除历史中的命令以及清除整个历史。

本页内容

本教程展示了使用 history 命令来显示 Bash 历史记录、在历史记录中搜索、删除命令以及清除整个历史记录。

Bash 中的 history 命令

Bash 中的 history 命令显示在 shell 会话中执行的所有命令的列表。history 命令将在 shell 上执行的每个命令视为一个事件,并为其分配一个事件编号。

以后可以使用事件编号访问这些命令,也可以修改它们。主目录中的 .bash_history 文件还存储终端上最近执行的命令。

Bash 中的 history 环境变量

history 命令相关的三个环境变量是: HISTFILEHISTFILESIZEHISTSIZE。环境变量 HISTFILE 存储 Bash 历史文件的名称和位置 .bash_history

环境变量 HISTFILESIZE 存储存储在 .bash_history 文件中的命令数,HISTSIZE 存储可以缓存的命令数。

下图显示了三个环境变量中存储的值; HISTFILEHISTFILESIZEHISTSIZE

.bash_history 文件可以存储 2000 条命令,一旦达到最大命令数,将删除最旧的命令,并存储新的命令。

系统可以缓存的最大命令数为 1000。

Bash 中的环境变量

你必须编辑主目录中的 .bashrc 文件以修改三个环境变量。

在 Bash 中显示历史

要在 Bash 中显示所有 history 命令,请键入 history 并按 Enter。当执行下图中的 history 命令时,我们看到部分输出显示到标准终端。

命令前面的数字是与每个命令关联的事件编号。

在 Bash 中显示历史

在 Bash 中显示历史中的前 n 个命令

我们可以使用 history 命令和 head 命令来显示历史中的前 n 个命令。我们在下图中显示了历史上的前 10 个命令。

我们使用 history 命令、管道运算符和 head 命令来显示前 10 个命令。history 命令输出通过管道传送到 head 命令,该命令仅获取历史输出的前 10 行并将它们显示到标准输出。

在 Bash 中显示历史上的第一个命令

在 Bash 中显示历史上最后的 n 个命令

我们可以使用 history 命令来显示最后 n 个命令并传递一个整数作为参数。我们传递的整数告诉 history 命令显示历史中最后的 n 命令。

我们使用 history 命令并传递下图中的整数 7。这意味着 history 命令将显示历史中最后的 7 命令。

在 Bash 中显示历史上最后的命令

在 Bash 中搜索历史

我们还可以使用 history 命令和 grep 命令来搜索历史记录中的特定模式。下图在历史记录中使用 grep 命令搜索正则表达式 delft

我们使用 history 命令、管道运算符和 grep 命令在历史记录中搜索正则表达式。history 命令的输出通过管道传送到 grep 命令,该命令在其中搜索正则表达式 delft

所有匹配正则表达式的行都显示到标准终端。

在 Bash 中搜索历史

从 Bash 的历史记录中删除命令

history 命令还可以从历史记录中删除特定命令。要从历史记录中删除命令,我们使用带有 -d 选项的 history 命令和命令的事件编号。

在下图中,我们使用命令 history 10 列出历史中最后的 10 命令。我们决定删除已突出显示的命令。

我们使用带有 -d 选项的 history 命令,并传入突出显示命令的事件编号。它从历史记录中删除该命令。

为了确认命令是否已被删除,我们检查历史记录中的最后 10 行,我们看到事件 ID 为 312 的命令 pwd 不存在。

从 Bash 的历史记录中删除命令

删除 Bash 中的全部历史记录

要删除历史记录中的所有条目,我们使用带有 -c 选项的 history 命令。它会删除历史记录中的所有条目。

在下图中,我们使用 history 命令列出历史中最后的 5 个命令。稍后,我们使用带有 -c 选项的 history 命令来清除历史记录中的所有条目。

我们使用 history 命令显示历史中的所有条目,我们看到所有条目都已被清除。

删除 Bash 中的全部历史记录