首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

centos7 shell 清除最近30条shell历史记录

直接:将/root/.bash_history,文件清空即可。

不管用

history -c

在CentOS 7系统中,如果你想清除最近30条shell历史记录,而不是全部清空,bash shell并没有直接提供一个命令来删除特定数量的历史记录。但你可以通过编辑.bash_history文件或结合使用history命令和文本处理工具(如tail)来实现这一目的。

这里有一个间接方法:

首先备份你的历史记录文件:

cp ~/.bash_history ~/.bash_history.backup

然后显示历史记录并移除最后30行:

history -a # 将内存中的历史记录追加到文件中,确保文件包含所有最新记录 history -w # 强制写入历史记录到文件 sed -i '$d' ~/.bash_history # 删除最后一行 sed -i -e '1,30d' ~/.bash_history # 删除前30行

不过,请注意上述方法假设你的.bash_history文件是按照最新的命令在最下面排列的,这是大多数Linux系统中的默认设置。如果系统的配置不同,可能需要调整sed命令的参数。

另外,如果你希望实时操作内存中的历史记录,不依赖于文件操作,那么可以编写一个脚本来读取历史、过滤掉最近的30条记录,并重新加载新的历史列表,但这通常涉及到更复杂的步骤,并且不是bash的标准功能。

还有一种临时解决方案是在当前会话中不影响历史文件的情况下不保存最近执行的命令到历史记录,但这并不能删除已经存储在.bash_history文件中的记录:

export HISTSIZE=0 # 不保存新命令到历史记录

但这个设置仅影响当前shell会话,重启终端或新开一个会话时,HISTSIZE将恢复默认值,并且之前的历史记录依然存在。要清除CentOS 7系统中当前用户的bash shell的所有历史记录,可以按照以下步骤操作:

清除内存中的历史命令记录(当前会话):

history -c

清除用户目录下保存的历史命令文件 .bash_history:

echo > ~/.bash_history

或者使用 truncate 命令清空文件内容:

truncate -s 0 ~/.bash_history

这样就可以确保已登录用户的所有历史记录被清除。如果你需要为所有用户清除,则需要遍历每个用户的家目录进行相同的操作。

另外,如果你希望在每次退出shell时自动清除历史记录,可以在用户的.bashrc或.bash_profile配置文件中加入以下行:

export HISTFILESIZE=0

这条设置将使得当用户退出shell时,.bash_history文件的内容不会被保存下来。不过,请注意,这会永久性地阻止bash保存任何历史记录,除非你移除或修改这个设置。

  • 发表于:
  • 原文链接https://page.om.qq.com/page/O7E22fDeZhkWM85ocosbccfw0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券