在Linux中,在终端中运行的所有命令都会存储在主目录中名为 .bash_history 的文本文件中。这个时候可以通过使用 history 命令来显示系统自您启动会话以来输入的所有命令的列表。出于某种原因,有时候想要从Linux Bash历史记录中删除全部或特定命令。那么如何来删除这个历史记录呢?
1,为啥要清除历史命令行以及为啥不能清除历史命令行?
为啥要清除历史命令行?
有些时候管理员在执行一些设计到安全以及非常隐私的一些命令时,为了不让任何人都能够去执行这些命令,这个时候在执行完相应的命令之后一定要记得删除对应的历史命令,从而不让任何都执行相应的命令。或者有些命令对系统会造成相应的破坏,非专业人士一般不建议让操作,这个时候执行的命令一定要记得清除掉,否则对于不熟悉的人,导致误操作和执行,就会对系统造成相应的损坏,通常这种情况对相应的命令行历史记录进行清除是一种很好的做法。这只是一部分原因,清除 Linux 命令行历史记录可能还有许多其他原因。
如何在 Linux 中删除 Bash 历史记录?
在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点定时执行清除历史命令记录。
总结:本文主要讲解了如何清除历史命令记录,可以通过配置文件来清除全部历史命令,也可以通过删除具体的特定历史记录配置,还可以忽略某些记录配置不被记录。
本周点击榜
本月点击榜