📜  Linux 中的 HISTCONTROL 命令示例

📅  最后修改于: 2022-05-13 01:57:31.052000             🧑  作者: Mango

Linux 中的 HISTCONTROL 命令示例

在 Linux 中,history 命令可用于显示最近执行过的命令列表。 HISTCONTROL 变量是一个以冒号分隔的值列表,用于控制命令在历史列表中的保存方式。 HISTCONTROL 变量允许我们更有效地存储 bash 历史记录。它可用于忽略重复的命令或带有前导空格的命令,或两者兼而有之。

HISTCONTROL 命令的用途:

  • 在命令行中工作时,多个命令会被多次执行。默认的 History 大小是 500。所以存储多个命令会浪费内存。尽管可以使用 HISTFILESIZE 更改默认历史记录大小,但有利于消除重复项。这可以使用 HISTCONTROL 来实现。
  • 当我们不希望某些命令出现在 History 中时,可以使用 HISTCONTROL 变量来完成。我们可以通过在命令前添加一个空格来指示 history 忽略该命令。

使用 HISTCONTROL 命令

1. ignoreups:它会导致匹配上一个历史条目的行不被包括在内。如果它与前一个命令相同,它不会将命令添加到历史记录中。它不会在历史列表中进一步回溯。

HISTCONTROL=ignoredups

此命令执行后的历史记录不会存储与最近使用的命令相同的命令。考虑使用ignoreups后依次添加以下命令:

pwd
whoami
date
pwd
pwd
whoami

当连续输入两个 pwd 命令时,第二个命令将被忽略并且不会添加到历史记录中。但是如果前一个命令不是 pwd,那么它不会被忽略。



组织控制

2. ignorespace:导致以空白字符开头的行不被包含在历史列表中。如果我们不希望某个命令包含在历史记录中,我们可以在该命令之前使用空格字符来避免将其包含在历史记录列表中。

HISTCONTROL=ignorespace

考虑到下面的命令是在使用 ignorespace 后依次添加的,我们不想包含 date 命令,因此可以在它之前添加一个空格字符:

pwd
whoami
date
ls -l | wc -l

由于 date 命令前有一个空格,它不会出现在历史列表中。

histcontrol 忽略空间

3. ignoreboth:当我们想同时使用ignorespace和ignoreups时使用。

HISTCONTROL=ignoreboth

它与以下内容相同:

HISTCONTROL=ignorespace:ignoredups

历史记录将不包括带有前导空白字符和重复项的命令。考虑使用ignoreboth后依次添加以下命令:

whoami
pwd
pwd
pwd

只有一个 pwd 命令被添加到历史列表中,因为一个 pwd 命令前面有一个空格字符,而另一个与历史列表中包含的最新命令相同。

histcontrol 忽略两者

4. erasedups:它允许在保存该行之前从历史列表中删除与当前行匹配的所有先前行。不测试多行复合命令的第二行和后续行,并且在 HISTCONTROL 值的任何情况下都将添加到历史记录中。它的语法是:

HISTCONTROL=erasedups

使用此命令后的历史记录将不会存储任何重复元素。命令执行后,它会在将其附加到历史记录之前将其与其他最近的命令进行匹配,如果找到匹配,则该命令将被忽略并且不存储在历史记录中。考虑到使用 erasedups 后依次添加以下命令:

pwd
whoami
date
ls -l | wc -l
pwd
whoami

whoami 和 pwd 命令已被使用过两次,但在实现了擦除后,它不会两次附加到历史记录中。输出可以在下图中看到:

hsicontrol 擦除转储