CentOS 7.6 history命令用法及解决history -c不能彻底删除历史命令的问题

概述及原理

history命令用于显示历史记录和执行过的指令命令。history命令是被保存在内存中的,当退出或者登录shell时,会自动保存到~/.bash_history文件中,登陆时,又会从 ~/.bash_history自动读取到内存,在内存中,历史命令默认能够存储1000条历史命令,该数量是由环境变量HISTSIZE进行控制,HISTSIZE命令存在于/etc/profile中。
在这里插入图片描述

用法

  • -c: 将目前shell中的所有history命令消除。对命令历史文件没有影响

  • -w :将本次登录的命令写入命令历史文件中, 默认写入~/.bash_history,因为本次的命令在用户注销成功后才会写入文件中。

  • -r : 将命令历史文件中的内容读入到目前shell的history记忆中
  • ! number 执行第几条命令,如!2就是执行history结果的第二条命令

在这里插入图片描述

  • !!:执行上一条命令

在这里插入图片描述

  • !后跟一条命令的部分字符,如:!c 执行最近一条以c开头的命令

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
可以看到最近执行的命令可以使用history打印出来,但是并没有保存在.bash_history中。

history -c清除历史命令的两种情况

如果我们希望在离开系统的时候别人看不到我刚才做了哪些操作的话,我们就要对我们的历史命令进行擦除的操作,需要使用history -c命令,

1、注销退出登陆

上面说过,历史命令在我们登陆的时候是存在内存当中,等我们离开了才写进文件中,所以下次登录系统时家目录必然会产生.bash_history文件,如果离开的时候清除内存中的命令就不会产生.bash_history文件了。我们都知道,用户登出系统的时候会执行.bash_logout文件,所以我们可以把history -c命令写进~/.bash_logout中就可以了
在这里插入图片描述

2、关机重启系统

但是~/.bash_logout这个文件只在用户登出系统时生效,如果是关机重启这样的操作是不执行的,若要重启之后还是看不到之前的历史命令的话必须也要删除 ~/.bash_history这个文件,我们可以在用户登入系统的时候删除它,那么对于用户来说是不感知的,那么就把它写在 ~/.bash_profile里,用户登陆系统的时候就删除了 ~/.bash_history文件,内存也就调不到历史命令了

扫描二维码关注公众号,回复: 11469520 查看本文章

在这里插入图片描述
重启系统可以ls -a查看到没有出现.bash_history文件
在这里插入图片描述

注意:这里以root用户为例演示了清除命令的操作,方法当然不止这一种,具体怎么配置请根据实际需求。

猜你喜欢

转载自blog.csdn.net/shengjie87/article/details/107026408