如何通过隐身方式隐藏 Linux 命令行历史

如果您是 Linux 命令行用户,您会同意有时您不希望将您运行的某些命令记录在命令行历史记录中。 这可能有很多原因。 为了 example,您在公司中处于某个职位,并且您拥有一些您不希望其他人滥用的特权。 或者,您在浏览历史列表时不希望意外运行某些关键命令。

但是有没有办法控制什么进入历史列表,什么没有? 或者,换句话说,我们可以在 Linux 命令行中打开类似 Web 浏览器的隐身模式吗? 答案是肯定的,并且有很多方法可以实现这一点,具体取决于您到底想要什么。 在本文中,我们将讨论一些可用的流行解决方案。

笔记:本文中介绍的所有命令都已在 Ubuntu 上进行了测试。

可用的不同方式

我们将在这里描述的前两种方式已经在我们之前的一篇文章中介绍过。 如果您已经了解它们,则可以跳过这些。 但是,如果您不知道,建议您仔细阅读它们。

1.命令前插入空格

是的,你没看错。 在命令的开头插入一个空格,它会被 shell 忽略,这意味着该命令不会被记录在历史记录中。 但是,有一个依赖关系——上述解决方案只有在 HISTCONTROL 环境变量设置为“ignorespace”或“ignoreboth”时才有效,这是大多数情况下的默认设置。

因此,如下所示的命令:

如果您已经执行此命令,则不会出现在历史记录中:

下面的截图是一个 example 这种行为。

第四个“echo”命令没有记录在历史记录中,因为它在开始时以空格运行。

2.禁用当前会话的整个历史记录

如果您想禁用会话的整个历史记录,您可以通过在开始命令行工作之前取消设置 HISTSIZE 环境变量来轻松做到这一点。 要取消设置变量,请运行以下命令:

HISTFILE 是可以存储在历史列表中的行(或命令)数,用于正在进行的 bash 会议。 默认情况下,这个变量有一个设定值——对于 example1000 在我的情况下。

因此,上面提到的命令会将环境变量的值设置为零,因此在您之前不会将任何内容存储在历史列表中 close 终点站。 请记住,您也无法通过按向上箭头键或运行 history 命令。

3. 完成后擦除整个历史记录

这可以看作是上一节中提到的解决方案的替代方案。 唯一的区别是,在这种情况下,您在完成所有工作后运行命令。 以下是有问题的命令:

如前所述,这将具有与上述 HISTFILE 解决方案相同的效果。

4. 只为你所做的工作关闭历史

虽然上面描述的解决方案(2 和 3)可以解决问题,但它们会删除整个历史记录,这在许多情况下可能是不希望的。 在某些情况下,您可能希望保留历史列表直到您开始命令行工作。 对于此类情况,您需要在开始工作之前运行以下命令:

笔记: [space] 代表一个空格。

上述命令将暂时禁用历史记录,这意味着您在运行此命令后所做的任何事情都不会记录在历史记录中,尽管在上述命令之前执行的所有内容都将保留在历史记录列表中。

要重新启用历史记录,请运行以下命令:

这使事情再次恢复正常,这意味着在上述命令之后完成的任何命令行工作都将显示在历史记录中。

5.从历史中删除特定命令

现在假设历史列表已经包含一些您不想记录的命令。 在这种情况下可以做什么? 这很简单。 您可以继续删除它们。 以下是如何做到这一点:

上面的命令将输出一个带有数字的匹配命令列表(在历史列表中) [num] 在他们每个人之前。

确定要删除的命令后,只需运行以下命令即可从历史列表中删除该特定条目:

下面的截图是一个 example 这个的。

命令行历史删除特定命令

第二个“回声”命令已成功删除。

或者,您可以按向上箭头键返回历史列表,一旦您感兴趣的命令出现在终端上,只需按“Ctrl + U”即可完全空白该行,有效地将其从历史列表中删除列表。

结论

您可以通过多种方式操作 Linux 命令行历史记录以满足您的需求。 但是请记住,从历史记录中隐藏或删除命令通常不是一个好习惯,尽管它本身也没有错,但是您应该知道自己在做什么以及它可能产生的影响。

订阅我们的新闻!

我们最新的教程直接发送到您的收件箱

注册所有时事通讯。 注册即表示您同意我们的隐私政策并且欧洲用户同意数据传输政策。 我们不会共享您的数据,您可以随时取消订阅。 订阅