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

时间:2020-03-21 11:44:11  来源:igfitidea点击:

Linux中清除命令行历史记录

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

1.使用"历史"命令清除整个命令行历史记录

如我们所知,"历史记录"命令将显示上次执行的命令。

要查看先前执行的命令,请运行:

$history

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

$history -c

或者

$history -cw

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

2.避免在每个命令之前插入空白空间,避免在历史列表中保存命令

使用此方法,我们可以消除在历史记录列表中保存的特定命令。
在任何命令之前刚刚放置空格(从键盘点击空间列)。
该命令不会在历史记录中记录。

为此,必须将HistControl环境变量的值设置为"IgnorEspace"或者"Ignoreboth"。

编辑~/.bashrc文件:

$nano ~/.bashrc

最后添加以下行:

export HISTCONTROL=ignorespace

保存并关闭文件。
运行以下命令以生效更改。

$source ~/.bashrc

或者,只需注销并重新登录使更改生效。

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

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

这里<space>表示空白空间。

请参阅以下屏幕截图:

现在,运行"历史"命令以查看最近执行的命令。

$history

示例输出:

3 clear
 4 export HISTCONTROL=ignorespace
 5 clear
 6 uname -a
 7 sudo pacman -Syyu
 8 sudo wifi-menu
 9 ls
 10 history

如上所述,在历史记录命令输出中,不会显示"sudo ping theitroad.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>

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

例如,要从历史记录中删除具有行"5"的"时间"命令,请运行:

$history -d 5

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

$history

示例输出:

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

如我们所见,"时间"命令已被删除。
同样,我们可以从历史记录列表中删除任何命令。

推荐下载 - 免费电子书:"在5天内学习Linux"

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

每次手动清除历史时,我们可以在注销时自动清除它。

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

$vi ~/.bashrc

添加以下行:

unset HISTFILE

保存并关闭文件。
现在,从会话注销后,历史将被清除。

5.永久删除命令行历史记录

所有上述方法只会从活动会话中删除命令,例如:当前打开的终端。
如果我们有多个终端运行不同的命令,则"历史记录"命令只会从运行此命令的位置删除历史记录。
其他终端的命令仍将可用。

要从所有会话中删除历史记录中的所有命令,我们必须删除.bash_history文件的内容。
此文件保存我们在终端中运行的命令列表。
我们可以每次手动清除此文件或者设置CRON作业以定期清除它。

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

$cat /dev/null > ~/.bash_history

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

或者,我们可以使用Cron作业定期安排此任务。

为此,运行:

$crontab -e

添加以下命令:

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

保存和退出文件。
历史将在每天晚上8点自动清除。

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

清除命令行历史记录是一个很好的做法,但是在某些情况下,我们不得清除历史。
例如,我们要经常重复特定命令。
你每次键入相同的命令吗?
没有必要。
就像我说过的那样,你在终端上运行的命令将保留在~/.bash_history文件中。
刚刚点击键盘中的上箭头,最近将出现的命令列表。
继续击中上箭头键,直到找到要运行的命令。
一旦找到要运行的命令,只需按Enter才能执行。

我们每次都不必键入整个命令。
此外,有时我们将不会记得上一届会话中的一些冗长和复杂的命令。
在这种情况下,我们可以使用"历史记录"命令来检索先前执行的命令。