Linux 中的 history 命令

Fumbani Banda 2024年2月15日
  1. Bash 中的 history 命令
  2. Bash 中的 history 环境变量
  3. 在 Bash 中显示历史
  4. 在 Bash 中显示历史中的前 n 个命令
  5. 在 Bash 中显示历史上最后的 n 个命令
  6. 在 Bash 中搜索历史
  7. 从 Bash 的历史记录中删除命令
  8. 删除 Bash 中的全部历史记录
Linux 中的 history 命令

本教程展示了使用 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 中的全部历史记录

作者: Fumbani Banda
Fumbani Banda avatar Fumbani Banda avatar

Fumbani is a tech enthusiast. He enjoys writing on Linux and Python as well as contributing to open-source projects.

LinkedIn GitHub