如何避免 Linux 中 Bash 历史记录中的重复条目

在这个简短的指南中,我们将学习如何避免 Linux 中 Bash 历史记录中的重复条目。 从命令行工作时,您可能多次运行某些 Linux 命令。 如您所知,我们在终端中运行的每个命令都保存在历史文件中。 所以一遍又一遍地执行相同的命令会填满历史文件。 迟早,您最终会在历史文件中出现过多的重复条目。

默认情况下,历史文件中存储了 500 个命令条目。 在最近的 Ubuntu 系统中,文件大小为 1000。一旦命令条目的数量超过默认限制,最旧的条目将从历史列表中删除。 因此,您无法检索旧条目。 当然,您可以增加历史文件的大小并根据需要保存尽可能多的条目。 但是,与其增加历史文件大小,不如避免在历史文件中保存重复项。

内容

  1. 查找历史文件位置
  2. 更改历史文件位置
  3. 避免 Linux 中 Bash 历史记录中的重复条目
    1. 帮助我们帮助您:

查找历史文件位置

命令历史是基于每个用户存储的特定于 shell 的功能。 根据您使用的 SHELL,历史文件保存在特定文件中。 在使用 Bash 的 Linux 系统中,命令保存在 ~/.bash_history 默认文件。 您可以通过运行以下命令来检查 shell 历史文件的位置:

$ echo $HISTFILE

这里,HISTFILE 是一个变量,用于定义保存命令历史的文件的名称。

我的示例输出 Ubuntu 桌面:

/home/sk/.bash_history

CentOS 8,我得到以下输出:

/root/.bash_history

更改历史文件位置

如果要更改默认位置,请运行:

$ echo " HISTFILE=~/.custom_file" >>~/.bashrc

在上面的命令中用你自己的替换“~/.custom_file”。

运行以下命令以应用更改:

$ source ~/.bashrc

现在让我们看看如何避免多次保存相同的命令 ~/.bash_history 文件。

避免 Linux 中 Bash 历史记录中的重复条目

我们使用“history”命令检索最后执行的命令。 看看下面的例子:

$ history | grep ls

示例输出:

    8  lsb_release -a    13  ls -l    14  lsb_release -a    17  ls -l    20  ls -l    23  lsb_release -a    27  ls    29  lsb_release -a    32  ls    36  ls    42  ls    44  lsb_release -a    62  history | grep ls

正如你在上面的输出中看到的, “ls” 命令已被记录多次。 我们可以使用控制这些重复 组织控制 多变的。 HISTCONTROL 可以具有以下值:

  • 忽略空间 – 以空格开头的行不会保存在历史记录中。
  • 被忽略 – 与先前历史条目匹配的行将不会被保存。 换句话说,重复项被忽略。
  • 忽略两者 – 它是“ignorespace”和“ignoredups”值的简写。 如果将这两个值设置为 HISTCONTROL 变量,则不会保存以空格开头的行和重复项。
  • 删除 – 消除整个历史中的重复项。

因此,为了避免 Linux 中 Bash 历史记录中的重复条目,请编辑您的 ~/.bashrc 文件:

$ nano ~/.bashrc

在最后添加以下行:

 HISTCONTROL=ignoredups