如何在 Linux 中清除命令行历史记录

在 Bash 中,您在终端中运行的所有命令都存储在一个名为 .bash_history 在您的主目录中。 我们可以使用 history 命令以显示自您开始会话以来输入的命令的列表。 出于某种原因,您可能希望从 Bash 历史记录中删除全部或特定命令。 在这个简短的指南中,让我们通过示例学习如何清除 Linux 中的命令行历史记录。

在进入主题之前,首先让我们看看为什么我们应该清除命令行历史,以及为什么在某些情况下我们不应该这样做。

内容

  1. 为什么要清除命令行历史记录?
  2. 为什么我们不应该清除命令行历史?
  3. 清除 Linux 中的命令行历史记录
    1. 1.使用history命令清除整个命令行历史
    2. 2.通过在每个命令前插入空格来避免将命令保存在历史列表中
    3. 3.从历史中清除或删除特定命令
    4. 4.注销时自动清除命令行历史
    5. 5.永久删除命令行历史
      1. 结论

为什么要清除命令行历史记录?

您可能不想公开 Linux 系统的命令行历史记录。 例如,如果您是 Linux 培训师/导师,您可能已经在实验室计算机中向学生教授了一些命令。

这些命令可能是有害的,不应该使用。 但是学生们可能没有完全意识到这些关键命令的后果。

好奇的同学可能会搜索命令行历史,想知道这些命令会做什么,然后开始一一测试。 结果? 他/她可能会无意中破坏系统。

你会允许吗? 当然,我们可以在几分钟内重新安装或修复系统。 但是,如果您稍加小心,则完全没有必要。 因此,不时清除命令行历史记录,尤其是在共享计算机中,是一种很好的做法。

这只是一个例子。 清除 Linux 命令行历史记录可能还有许多其他原因。

为什么我们不应该清除命令行历史?

清除命令行历史记录是一种很好的做法,但是在某些情况下您不能清除历史记录。 例如,您想经常重复特定命令。 你会每次都输入相同的命令吗? 那没有必要。

正如我之前所说,您在终端上运行的命令将保留在 ~/.bash_history 文件。 您可以通过按键盘上的向上箭头来检索以前执行的命令。

当您点击 UP 时,您最近运行的命令列表将出现。 只需继续按向上箭头键,直到找到要运行的命令。 找到要运行的命令后,只需按 ENTER 即可执行。 而已。 您不必每次都键入整个命令。

有时您无法记住上一个会话中的一些冗长而复杂的命令。 在这种情况下,您可以使用 history 命令来检索以前执行的命令。

因此,如果您已经清除了 Bash 历史记录,则可以访问之前输入的命令。 这就是为什么您应该决定是否要清除命令行历史记录的原因。

事不宜迟,让我们看看如何在 Linux 中清除命令行历史记录。

清除 Linux 中的命令行历史记录

有很多方法可以清除命令行历史记录。 在这里,我列出了五种方法。

1.清除整个命令行历史使用 history 命令

如前所述, history command 将显示最后执行的命令。

要查看之前在 Linux 中执行的命令,请运行:

$ history

要清除历史记录,只需运行以下任一命令:

$ history -c

或者

$ history -cw

上述命令将清除命令行历史记录。

2.通过在每个命令前插入空格来避免将命令保存在历史列表中

使用此方法,您可以消除保存在历史列表中的特定命令。 只需在任何命令之前放置一个空格(从键盘上按空格键)。 该命令不会被记录在历史记录中。

为此,您必须将 HISTCONTROL 环境变量的值设置为 “忽略空间” 或者 “无视”.

编辑您的 ~/.bashrc 文件:

$ nano ~/.bashrc

在末尾添加以下行:

 HISTCONTROL=ignorespace

Save 和 close 文件。 运行以下命令使更改生效。

$ source ~/.bashrc

或者,只需注销并重新登录以应用更改。

要验证它,请运行一些命令。 并在任何命令前面放置一个空格。 我在最后一个命令中放了一个空格。

$ clear
$ uname -mrs
$ sudo pacman -Syyu
$ sudo wifi-menu
$ ls
$ <space>sudo ping ostechnix.com

这里 表示空格。

请参考以下屏幕截图:

在命令前放置一个空格以避免在 Linux 中将其保存在历史记录中

现在,运行 history 命令查看最近执行的命令:

$ history

样本输出:

 3 clear  4  HISTCONTROL=ignorespace  5 clear  6 uname -mrs  7 sudo pacman -Syyu  8 sudo wifi-menu  9 ls  10 history
清除 Linux 中的命令行历史记录

正如您在上面的输出中看到的, "sudo ping ostechnix.com" 历史命令输出中不显示命令。

3.从历史中清除或删除特定命令

有时您可能想从历史列表中删除某些特定命令,而不是清除整个历史。

让我给你看一个例子。 我将在终端中运行以下命令。

$ clear
$ cal
$ time
$ ls
$ uname -r

然后,使用命令显示历史命令输出:

$ history

样本输出:

 3 clear  4 cal  5 time  6 ls  7 uname -r  8 history

正如您在上面的输出中看到的,历史命令显示最后执行的命令。

要从历史记录中清除或删除特定命令,请使用 -d 带有命令前缀号的标志:

$ history -d <number>

这里 表示每个命令的行号。

例如,要删除 “时间” 带有行号的命令 “5” 根据历史,运行:

$ history -d 5

现在,显示命令行历史以查看该命令是否被删除。

$ history

样本输出:

 3 clear  4 cal  5 ls  6 uname -r  7 history  8 history -d 5  9 history
从历史记录中清除或删除特定命令从历史记录中清除或删除特定命令

如您所见,“时间”命令已被删除。 同样,您可以从历史列表中删除任何命令。

Recommended Download - Free eBook: "Learn Linux in 5 Days"

4.注销时自动清除命令行历史

无需每次手动清除历史记录,您可以在注销时自动清除它。

为此,请编辑 ~/.bashrc 文件:

$ vi ~/.bashrc

添加以下行:

unset HISTFILE

Save 和 close 文件。 现在,从会话中注销后,历史记录将被清除。

5.永久删除命令行历史

所有上述方法只会从活动会话(即当前打开的终端)中删除命令。 如果您有多个终端运行不同的命令,则 history 命令只会删除您运行此命令的历史记录。 来自其他终端的命令仍然可用。

要从所有会话中的 Bash 历史记录中删除所有命令,您必须删除 .bash_history 文件。 该文件包含我们在终端中运行的命令列表。 您可以每次手动清除此文件,也可以设置一个 cron 作业以定期清除它。

要手动清除此文件的内容,请运行:

$ cat /dev/null > ~/.bash_history

就像我说的,这将删除整个历史记录。 下次这个文件将开始记录历史。 您应该每天运行此命令以清除此文件的内容。

或者,您可以使用定期安排此任务 cron 工作.

为此,请运行:

$ crontab -e

添加以下命令:

00 20 * * * cat /dev/null > ~/.bash_history

Save 并退出文件。 历史记录将自动清除 晚上 8 点 每天。

  • 如何在 Linux 中避免 Bash 历史记录中的重复条目
  • 如何在 Linux 中从 Bash 历史记录中清除特定命令
  • 如何在没有行号的情况下显示 Bash 历史记录
  • 在 Linux 中重复上一个命令的 5 种方法
  • 为 Linux 命令添加书签以便于重复调用
  • 如何 Save 命令并按需使用它们

结论

在本教程中,您已经了解了为什么我们应该清除命令行历史记录,以及为什么在某些情况下不应该这样做。 此外,您还了解了在 Linux 中清除命令行历史记录的不同方法。 如果您知道任何其他方法,请随时在下面的评论部分告诉我们。

BASHBash 历史清除 Linux 中的命令行历史清除历史 LinuxCommand lineHistory commandLinux