导读 如果你登录过 Linux 系统,并敲过一些命令,那你应该知道,bash history 会记录你输入的所有命令。这个操作其实是有一定风险的。

我个人经常使用 Linux,所以我想着研究一番,看看如何隐藏 bash history。下面就是我整理的一些方法,仅供大家参考:

· exit normally – history 记录正常写入

· kill– 服务器端运行 -kill bash 进程ID后就不会再记录 history 了。我检查过是否需要加-9参数,不过不用,只需要一个基本的 kill 命令,就可以杀掉进程并阻止它写入文件。

·kill – 客户端运行–kill ssh 进程 ID,即时加了-9参数还是会有历史记录。

· set +o history– 不会将任何当前会话写入日志。可以在会话期间任何时间运行,并隐藏所有命令。

· set -o history– 重启日志记录,但是会记录 set 命令,所以会发生一些明显的变化。

· unset HISTFILE – 清除记录历史文件位置的变量,这样就不会存储任何东西

· history -c– 彻底清除历史。这条命令作用非常明显,因为所有的历史命令都没了。

· export HISTIGNORE=“ls*:cat*”– 这条命令是不记录引号中以冒号为分隔符的命令。这条命令可以使用shell模式,有点类似正则,但不尽相同

· export HISTFILESIZE=10– 设置历史记录数量为10。如果你已经完成了想要隐藏的操作,但又想保留其他的命令,请重新计算,将记录数的大小设置为小于总数并继续执行。这样,所有之前的命令就会不可见,看起来会有一些可疑,但是因为历史记录中还是有内容,所以人们可能不会注意到。

· editing the.bash_history file– 如果你在会话期间编辑这个文件,编辑的内容将会出现在会话的命令之前,这样你其实可以在 history 中添加一些你实际并没有运行过的命令,所以这也不失为一个好办法。

· using multiple sessions– 一个会话终止时才会写入 bash history。那我们可以使用两个会话,第一个会话终止会写入history,然后第二个会话的内容会在第一个会话终止时才开始写入 history

· putting a space before a command(命令前面加一个空格) – 根据配置,在命令前加一个空格,就会不进行记录。如果你已经输入了你不想记录的命令,那么这个功能就没什么用,但如果想让几条好不相关的命令看似一条的话,使用这个还是不错的。在使用之前请先进行测试,因为根据发行版和用户配置不同,情况会有所不同。

· history -r– 这条命令会重新读取 history 文件,能够将历史记录重置为你登录时的状态。这条命令似乎非常有用,尤其是你可以编辑 history 文件,添加命令时,然后关掉 shell。这会写入经过你修改的 history,不留任何痕迹。

上面这些命令,好像“set +o history”是最好用的也是最通用的方法,因为它会隐藏当前会话的所有命令,但是会保留之前的命令。
不过根据场景不同,其他的命令也是非常有效的。

在你使用这些命令之前,一定要先自己测试一遍。当你已经登录了一个系统,而且意识到需要隐藏某些命令时,不要慌张,history 只会在会话结束时写入,所以只要会话还没有结束,你就可以停下来思考,怎么去隐藏命令,希望本文的内容能够帮到你。

本文转自:https://www.linuxprobe.com/linux-bash.html

教你一些Linux中隐藏bash历史命令的小技巧的更多相关文章

  1. Linux中编写Bash脚本的10个技巧

    Shell 脚本编程 是你在 Linux 下学习或练习编程的最简单的方式.尤其对 系统管理员要处理着自动化任务,且要开发新的简单的实用程序或工具等(这里只是仅举几例)更是必备技能. 本文中,我们将分享 ...

  2. 在 Alpine Linux 中安装 bash shell

    如何在我的 Alpine Linux LXD(Linux容器)虚拟机(VM)中安装 bash shell? Alpine Linux 自带 BusyBox 工具.它被评为“嵌入式 Linux 的瑞士军 ...

  3. [转]linux中强大的screen命令

    [转]linux中强大的screen命令 http://pythonorg.diandian.com/post/2012-01-05/40027464147 今天用SCREEN用点生了,有几个功能不知 ...

  4. Linux中W与Who命令的使用

    踢掉一个从某个终端连上的用户pkill -kill  -t pts/0 ---------------------------------------------------------------- ...

  5. Linux中的叹号命令

    在shell环境下操作,需要积累点快捷输入的小技巧: 最常用的技巧恐怕就是Tab自动补全以及上方向键来回退上几条历史命令了,这些对于csh,bash,ksh,zsh都适用. 最近还找到一种快速回退上一 ...

  6. Linux Shell基础 Bash常见命令 history、alias命令以及常用快捷键

    概述  shell中常见命令history 历史纪录命令:history 命令格式如下: [root@localhost ~]# history [选项] [历史命令保存文件] -c:清空历史命令: ...

  7. 【日常小记】linux中强大且常用命令:find、grep【转】

    转自:http://www.cnblogs.com/skynet/archive/2010/12/25/1916873.html 在linux下面工作,有些命令能够大大提高效率.本文就向大家介绍fin ...

  8. Linux 中强大且常用命令:find、grep

    在linux下面工作,有些命令能够大大提高效率.本文就向大家介绍find.grep命令,他哥俩可以算是必会的linux命令,我几乎每天都要用到他们.本文结构如下:    find命令        f ...

  9. 【转载】Linux中强大且常用命令:find、grep

    转载自:http://www.linuxeden.com/html/softuse/20130804/142065.html 在linux下面工作,有些命令能够大大提高效率.本文就向大家介绍find. ...

随机推荐

  1. qsort函数的用法

    qsort函数的用法   qsort 功 能: 使用快速排序例程进行排序  用 法: void qsort(void *base, int nelem, int width, int (*fcmp)( ...

  2. Android组件化搭建

    什么是组件化 为了降低项目耦合性,在Android工程中如何实施,目前有两种途径,也是两大流派,一个是组件化,一个是插件化.在这里只介绍组件化,插件化暂不介绍 正常的APP只有一个applicatio ...

  3. sql语句之where子句

    现在的登录都是把信息存在数据库,然后把输入的与数据库内容进行匹配,一样就登录成功,否则不成功.验证码是为了防止暴力破解,因为计算机能够自动匹配密码,但是不能识别图片上的字母,只有人能识别,所以匹配的速 ...

  4. AutoCAD.net支持后台线程-Socket通讯

    最近因为公司项目的需求,CAD作为服务端在服务器中常驻运行,等待客户端远程发送执行任务的指令,最终确认用Socket-tcp通讯,CAD需要实时监听客户端发送的消息,这时就需要开启线程执行Socket ...

  5. android中checkbox自定义样式

    1.首先res/drawable中定义checkbox_style.xml样式: <?xml version="1.0" encoding="utf-8" ...

  6. Expo大作战(四)--快速用expo构建一个app,expo中的关键术语

    简要:本系列文章讲会对expo进行全面的介绍,本人从2017年6月份接触expo以来,对expo的研究断断续续,一路走来将近10个月,废话不多说,接下来你看到内容,讲全部来与官网 我猜去全部机翻+个人 ...

  7. linux centOS7 设置 redis 开机启动

    1.为了让redis-server能在系统启动时自动运行,需要将redis服务作为守护进程(daemon)来运行,我们回/usr/local/cluster/7000/目录中找到一个redis.con ...

  8. MySQL 性能监控4大指标——第二部分

    [编者按]本文作者为 John Matson,主要介绍 mysql 性能监控应该关注的4大指标. 第一部分介绍了前两个指标:查询吞吐量与查询执行性能.本文将继续介绍另两个指标:MySQL 连接与缓冲池 ...

  9. Gradle 'MYasprj' project refresh failed Error:CreateProcess error=216, 该版本的 %1 与您运行的 Windows 版本不兼容

    Gradle ‘MYasprj’ project refresh failed Error:CreateProcess error=216, 该版本的 %1 与您运行的 Windows 版本不兼容.请 ...

  10. jmeter如何保持JSESSIONID

    利用Jmeter做接口测试的时候,如何提取头部的JSESSIONID然后传递到下一个请求,继续完成当前用户的请求. 一.如果响应数据里面没有返回JSESSIONID,直接添加http cookies ...