如何隐藏你的Linux的命令行历史

如果你是 Linux 命令行的用户,有的时候你可能不希望某些命令记录在你的命令行历史中。然而,有方法可以控制哪些命令进入历史列表,哪些不进入吗?或者换句话说,我们在 Linux 终端中可以开启像浏览器一样的无痕模式吗?答案是肯定的,而且根据你想要的具体目标,有很多实现方法。

如果你是 Linux 命令行的用户,有的时候你可能不希望某些命令记录在你的命令行历史中。原因可能很多,例如,你在公司担任某个职位,你有一些不希望被其它人滥用的特权。亦或者有些特别重要的命令,你不希望在你浏览历史列表时误执行。

然而,有方法可以控制哪些命令进入历史列表,哪些不进入吗?或者换句话说,我们在 Linux 终端中可以开启像浏览器一样的无痕模式吗?答案是肯定的,而且根据你想要的具体目标,有很多实现方法。在这篇文章中,我们将讨论一些行之有效的方法。

注意:文中出现的所有命令都在 Ubuntu 下测试过。

不同的可行方法

前面两种方法已经在之前一篇文章中描述了。如果你已经了解,这部分可以略过。然而,如果你不了解,建议仔细阅读。

1. 在命令前插入空格

是的,没看错。在命令前面插入空格,这条命令会被 shell 忽略,也就意味着它不会出现在历史记录中。但是这种方法有个前提,只有在你的环境变量 HISTCONTROL 设置为 "ignorespace" 或者 "ignoreboth" 才会起作用。在大多数情况下,这个是默认值。

所以,像下面的命令(LCTT 译注:这里[space]表示输入一个空格):

  1. [space]echo "this is a top secret"

如果你之前执行过如下设置环境变量的命令,那么上述命令不会出现在历史记录中。

  1. export HISTCONTROL = ignorespace

下面的截图是这种方式的一个例子。

第四个 "echo" 命令因为前面有空格,它没有被记录到历史中。

2. 禁用当前会话的所有历史记录

如果你想禁用某个会话所有历史,你可以在开始命令行工作前简单地清除环境变量 HISTSIZE 的值即可。执行下面的命令来清除其值:

  1. export HISTSIZE=0

HISTSIZE 表示对于 bash 会话其历史列表中可以保存命令的个数(行数)。默认情况,它设置了一个非零值,例如在我的电脑上,它的值为 1000。

所以上面所提到的命令将其值设置为 0,结果就是直到你关闭终端,没有东西会存储在历史记录中。记住同样你也不能通过按向上的箭头按键或运行 history 命令来看到之前执行的命令。

3. 工作结束后清除整个历史

这可以看作是前一部分所提方案的另外一种实现。唯一的区别是在你完成所有工作之后执行这个命令。下面是刚说到的命令:

  1. history -cw

刚才已经提到,这个和 HISTSIZE 方法有相同效果。

4. 只针对你的工作关闭历史记录

虽然前面描述的方法(2 和 3)可以实现目的,它们可以清除整个历史,在很多情况下,有些可能不是我们所期望的。有时候你可能想保存直到你开始命令行工作之间的历史记录。对于这样的需求,你开始在工作前执行下述命令:

  1. [space]set o history

备注:[space] 表示空格。并且由于空格的缘故,该命令本身也不会被记录。

上面的命令会临时禁用历史功能,这意味着在这命令之后你执行的所有操作都不会记录到历史中,然而这个命令之前的所有东西都会原样记录在历史列表中。

要重新开启历史功能,执行下面的命令:

  1. [Space]set -o history

它将环境恢复原状,也就是你完成了你的工作,执行上述命令之后的命令都会出现在历史中。

5. 从历史记录中删除指定的命令

现在假设历史记录中已经包含了一些你不希望记录的命令。这种情况下我们怎么办?很简单。直接动手删除它们。通过下面的命令来删除:

  1. history | grep "part of command you want to remove"

上面的命令会输出历史记录中匹配的命令,每一条前面会有个数字。

一旦你找到你想删除的命令,执行下面的命令,从历史记录中删除那个指定的项:

  1. history -d [num]

下面是这个例子的截图。

第二个 ‘echo’命令被成功的删除了。

(LCTT 译注:如果你不希望上述命令本身也被记录进历史中,你可以在上述命令前加个空格)

同样的,你可以使用向上的箭头一直往回翻看历史记录。当你发现你感兴趣的命令出现在终端上时,按下 “Ctrl U”清除整行,也会从历史记录中删除它。

总结

有多种不同的方法可以操作 Linux 命令行历史来满足你的需求。然而请记住,从历史中隐藏或者删除命令通常不是一个好习惯,尽管本质上这并没有错。但是你必须知道你在做什么,以及可能产生的后果。

via:https://www.maketecheasier.com/linux-command-line-history-incognito/

作者:Himanshu Arora 译者:chunyang-wen 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

(0)

相关推荐

  • linux解析命令行选项getopt_long用法解读

    linux解析命令行选项getopt_long用法 在程序中难免需要使用命令行选项,可以选择自己解析命令行选项,但是有现成的,何必再造轮子。 下面介绍使用getopt_long解析命令行选项。 程序中 ...

  • Linux通过命令行发邮件使用sendmail函数.mail函数?

    在Linux系统可通过命令行自由发送邮件,使用sendmail函数.php mail函数就能实现,如果你没有sendmail函数则需要在Linux系统安装sendmail,下面小编就给大家介绍下Lin ...

  • Win10系统如何开启Linux Bash命令行?

    Win10系统如何开启Linux Bash命令行?下面小编就为大家介绍一下具体的开启方式. 方法步骤: 1.首先将Win10系统升级到最新的Build 14316,然后到系统设置--更新和安全--针对 ...

  • Win10一周年更新预览版14316如何开启原生支持Linux Bash命令行?

    微软今天向Insider快速通道用户推送了Win10一周年更新预览版14316,本次更新带来了大量全新特性,包括全黑主题.Ubuntu Bash原生支持.跨平台小娜提醒.电脑体验Continuum模式 ...

  • 在Linux的命令行中使用BitTorrent进行下载的教程

    如果你喜欢尝试最新版甚至是 beta 版的 Linux 发行版来满足你的好奇心,并始终保持是最新版,那么你就会时常遇到下载较大的 ISO 镜像的烦恼.提供 ISO 的人通常会使用 ISO 镜像的 .t ...

  • 在Linux的命令行中实现字符出现频率统计的方法

    Linux 命令行有很多的乐趣,我们可以很容易并且完善地执行很多繁琐的任务.比如,我们计算一个文本文件中字和字符的出现频率,这就是我们打算在这篇文章中讲到的. 立刻来到我们脑海的命令,计算字和字符在一 ...

  • linux用命令行打开网页(linux访问网站命令)

    本套Linux进阶教程共分为14章,欢迎大家前来系统学习.第1章:访问命令行BASH SHELL简介命令行是基于文本的界面,可用于向计算机系统输入指令.Linux命令行由名为shell的程序提供.多年 ...

  • ubuntu(linux)命令行模式下如何挂载U盘

    ubuntu是一个非常好用的系统,是很多编程爱好者的首选,但是纯命令行模式的系统对于初学者来说是比较难的,下面小编就根据自己亲身实践来教大家如何在命令行模式下挂载一个U盘. 操作方法 01 首先打开系 ...

  • ubuntu(linux)命令行模式创建复制文件的方法

    ubuntu是一个非常好用的系统,是很多编程爱好者的首选,但是纯命令行模式的系统对于初学者来说是比较难的,下面小编就根据自己亲身实践来教大家如何在命令行模式下如何创建以及复制文件. 操作方法 01 首 ...

  • Linux的命令行中一些文本操作技巧的实例分享

    正则表达式 翻译领域不乏让人摸不着头脑的词汇,比如"句柄"."套接字"."鲁棒性".当然,"正则表达式"也属于这一类词汇 ...