讲中国历史,看历史知识,尽在讲历史网
您的位置:  > 世界历史

如何在 Linux 中删除 Bash 历史记录?

2024-08-18 01:04:52 来源:古今历史网_历史故事_历史知识分享平台 责编:admin

在Linux中,在终端中运行的所有命令都会存储在主目录中名为 .bash_history 的文本文件中。这个时候可以通过使用 history 命令来显示系统自您启动会话以来输入的所有命令的列表。出于某种原因,有时候想要从Linux Bash历史记录中删除全部或特定命令。那么如何来删除这个历史记录呢?

清空历史记录_清空记录清空历史记录_清空以前的记录

1,为啥要清除历史命令行以及为啥不能清除历史命令行?

为啥要清除历史命令行?

有些时候管理员在执行一些设计到安全以及非常隐私的一些命令时,为了不让任何人都能够去执行这些命令,这个时候在执行完相应的命令之后一定要记得删除对应的历史命令,从而不让任何都执行相应的命令。或者有些命令对系统会造成相应的破坏,非专业人士一般不建议让操作,这个时候执行的命令一定要记得清除掉,否则对于不熟悉的人,导致误操作和执行,就会对系统造成相应的损坏,通常这种情况对相应的命令行历史记录进行清除是一种很好的做法。这只是一部分原因,清除 Linux 命令行历史记录可能还有许多其他原因。

为啥不能清除历史命令行?

清除命令行历史记录是一种很好的做法,但在某些情况下一定不能清除历史记录。例如,有些时候需要经常执行重复的特定命令。这时候每次都会键入相同的命令吗?这是没有必要的。正如文中一开始所说,在Linux终端上运行的命令将保留在 ~/.bash_history 文件中。可以通过按住电脑键盘上向上的箭头来显示最近运行的命令列表。只需继续按向上箭头键,直到找到要运行的命令。找到要运行的命令后,只需按Enter(回车)键即可执行。就是这样。可以不必每次都键入整个命令。有时,上一次输入的命令很长,下次再输不一定记得记得这个冗长而复杂的命令。在这种情况下,可以使用history命令检索以前执行的命令。

因此,如果您已经清除了Bash历史记录,则不可以访问以前输入的命令。这就是为什么您应该决定是否要清除命令行历史记录的原因。所以是否清除历史记录命令还得根据具体的情况,一般情况下建议隐私的命令执行完记得清除,其它非必要的可以不用清除。

事不宜迟,接下来看看Linux中清除命令行历史记录。

2,清除单个历史命令行

通过下面的命令来列出执行过的历史命令。

[sharplee@localhost ~]$ history

清空记录清空历史记录_清空历史记录_清空以前的记录

查询特定的历史命令。

[sharplee@localhost ~]$ history | grep cd

清空历史记录_清空记录清空历史记录_清空以前的记录

根据查询出特定的历史命令,根据最前面显示的行数来删除特定的历史命令。

[sharplee@localhost ~]$ history -d 13

清空记录清空历史记录_清空以前的记录_清空历史记录

从上图可以看出13行的cd src/历史命令被删除了。

3,清除全部历史命令行

通过上面可以看到如何清除单个历史命令行,接下来看一下如何删除所有的历史命令行。

[sharplee@localhost ~]$ history -c

or

[sharplee@localhost ~]$ history -cw

清空历史记录_清空记录清空历史记录_清空以前的记录

4,如何排除带有空格命令不计入历史记录

通过下面方式,可以消除保存在历史记录列表中的特定命令。只需在任何命令之前放置一个空格(从键盘上点击空格键)。该命令不会记录在历史记录中。为此,必须将 HISTCONTROL 环境变量的值设置为“ignorespace”或“ignoreboth”。

修改配置文件~/.bashrc。

[sharplee@localhost ~]$ vi ~/.bashrc

export HISTCONTROL=ignorespace

清空历史记录_清空以前的记录_清空记录清空历史记录

修改完成之后报错,执行以下命令使其生效。

[sharplee@localhost ~]$ source ~/.bashrc

清空以前的记录_清空历史记录_清空记录清空历史记录

接下来验证以下,是否带有空格的命令不会记录到历史记录命令中。

清空记录清空历史记录_清空以前的记录_清空历史记录

从上图可以看出,确实带有空格的命令没有保存到历史命令列表中。

5,自动清除历史命令在系统注销或关闭

通过修改以下配置文件,可以让系统重启或者注销的时候能够让历史命令自动被清除,每次系统重启的时候历史命令都被自动清除掉。修改bashrc配置文件。

unset HISTFILE

清空以前的记录_清空历史记录_清空记录清空历史记录

清空历史记录_清空记录清空历史记录_清空以前的记录

接着,重启系统。检查一下历史命令是否存在。

清空以前的记录_清空记录清空历史记录_清空历史记录

6,永久删除历史命令行

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

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

[sharplee@localhost ~]$ cat /dev/null >~/.bashrc

清空历史记录_清空以前的记录_清空记录清空历史记录

这将删除整个历史记录。下次此文件将开始记录历史记录。可以每天运行此命令以清除此文件的内容。

下面通过一个定时任务来每天清除相应的历史记录。从而达到每天都不记录历史命令到历史文件。

[sharplee@localhost ~]$ crontab -e

接着增加以下内容。

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

清空记录清空历史记录_清空历史记录_清空以前的记录

上面的命令,在每天下午11点定时执行清除历史命令记录。

总结:本文主要讲解了如何清除历史命令记录,可以通过配置文件来清除全部历史命令,也可以通过删除具体的特定历史记录配置,还可以忽略某些记录配置不被记录。

古今历史网_历史故事_历史知识分享平台 https://www.yuzhubaobao.com/ ICP备案:鲁ICP备2024097632号-1 网站地图