Linux系统下shell之history 关于清除

您所在的位置:网站首页 linux清空页面 Linux系统下shell之history 关于清除

Linux系统下shell之history 关于清除

2024-07-10 21:20| 来源: 网络整理| 查看: 265

本篇关于在shell的history命令有一定的了解的童鞋使用,且在删除历史命令和部分删除中操作

 

1 查看 history [root@cdh-test-01 ~]# help history history: history [-c] [-d 偏移量] [n] 或 history -anrw [文件名] 或 history -ps 参数 [参数...] 显示或操纵历史列表。 带行号显示历史列表,将每个被修改的条目加上前缀 `*'。 参数 N 会仅列出最后的 N 个条目。 选项: -c 删除所有条目从而清空历史列表。 -d 偏移量 从指定位置删除历史列表。 -a 将当前绘画的历史行追加到历史文件中 -n 从历史文件中读取所有未被读取的行 -r 读取历史文件并将内容追加到历史列表中 中 -w 将当前历史写入到历史文件中 并追加到历史列表中 -p 对每一个 ARG 参数展开历史并显示结果 而不存储到历史列表中 -s 以单条记录追加 ARG 到历史列表中 如果给定了 FILENAME 文件名,则它将被作为历史文件。否则 如果 $HISTFILE 变量有值的话使用之,不然使用 ~/.bash_history 文件。 如果 $HISTTIMEFORMAT 变量被设定并且不为空,它的值会被用于 strftime(3) 的格式字符串来打印与每一个显示的历史条目想关联的时 间戳,否则不打印时间戳。 退出状态: 返回成功,除非使用了无效的选项或者发生错误。

 

2 清除所有历史记录 [el_robot@cdh-test-01 root]$ history 1 history 2 clear 3 history 4 top 5 ifconfig 6 awk --help 7 history [el_robot@cdh-test-01 root]$ history -c [el_robot@cdh-test-01 root]$ history 1 history [el_robot@cdh-test-01 root]$

3 (尖叫操作)删除部分历史记录

【提神醒脑(前提):bash执行命令时不是马上把命令名称写入history文件的,而是存放在内部的buffer中,等bash退出时会一并写入。   不过,可以调用'history -w'命令要求bash立即更新history文件。history -w   】     

部分历史记录的删除 主要是有些童鞋的误操作shell命令太多,或者之前历史记录有带密码参数比如(sqoop -username xxx -password yyy:yyy就是历史记录,被暴露的危险),鉴于安全起见 需要对历史记录做部分删除:

[el_robot@cdh-test-01 ~]$ ll -a 总用量 16 drwx------ 3 el_robot el_robot 108 3月 19 11:57 . drwxr-xr-x. 5 root root 48 3月 19 11:49 .. -rw------- 1 el_robot el_robot 144 3月 19 11:57 .bash_history -rw-r--r-- 1 el_robot el_robot 18 4月 11 2018 .bash_logout -rw-r--r-- 1 el_robot el_robot 193 4月 11 2018 .bash_profile -rw-r--r-- 1 el_robot el_robot 231 4月 11 2018 .bashrc drwxrwxr-x 2 el_robot el_robot 39 3月 19 11:55 .oracle_jre_usage [el_robot@cdh-test-01 ~]$ id el_robot uid=1002(el_robot) gid=1002(el_robot) 组=1002(el_robot),984(hive) [el_robot@cdh-test-01 ~]$ history 1 history 2 sqoop -connect mysql:jdbc://localhost:3306/xxx/yyy --username robot --password robot xxxxxx 3 ls /opt/ 4 who 5 w 6 history 7 ll -a 8 ll 9 ls -a 10 ls 11 ll -a 12 id el_robot 13 history [el_robot@cdh-test-01 ~]$ vi .bash_history [el_robot@cdh-test-01 ~]$ history -r [el_robot@cdh-test-01 ~]$ history

其中vi .bash_history中的操作举例参考:

1 history 2 sqoop -connect mysql:jdbc://localhost:3306/xxx/yyy --username robot --password robot xxxxxx 3 ls /opt/ 4 who 5 w 6 history 7 ll -a 8 ll 9 ls -a 10 ls ~ :4,10d ### 先set nu,根据行号指定行数范围删除,这里是4-10行的数据d后 按回车 删除

 history -d history_id :如 history -d 5 4  根据编号删除!  

[el_robot@cdh-test-01 ~]$ clear [el_robot@cdh-test-01 ~]$ history 1 history 2 sqoop -connect mysql:jdbc://localhost:3306/xxx/yyy --username robot --password robot xxxxxx 3 exit 4 clear 5 history [el_robot@cdh-test-01 ~]$ history -d 5 [el_robot@cdh-test-01 ~]$ history -d 5 4 ###指定编号 删除指令 [el_robot@cdh-test-01 ~]$ hist -bash: hist: 未找到命令 [el_robot@cdh-test-01 ~]$ history 1 history 2 sqoop -connect mysql:jdbc://localhost:3306/xxx/yyy --username robot --password robot xxxxxx 3 exit 4 clear 5 history -d 5 4 6 hist 7 history [el_robot@cdh-test-01 ~]$     4 总结: 在实践中经常会遇到需要清除history的场景,比如签发证书的操作记录等等。【一般常用的就是 history -c,而且能够立即生效】,但是在【非root】登录的场景下,这种方法不生效的场景下,可以像下面这样处理:  1.vim ~/.bash_history  该文件即为历史记录存储文件,我们随意修改 2.修改后再次 history 查看,发现并没有变化。原因:缓存  执行:history -r  读取历史文件并将其内容添加到历史记录中,即重置文件里的内容到内存中,完成修改! 3 . 如果上面1 2 在非root用户下不能生效 ,终极解决: 【 a. 将该文件清理或者者赋空,最简单的方式:echo > .bash_history,相当于往文件中写了个空. b. 然后执行exit退出当前会话,重新登录即可,注意这里不会立即生效,因为文件虽然被写了空,当时当前会话的缓存中还是存在的,所以必须退出重新建立一个新的会话 】

使得生效快的操作:执行exit退出当前会话,重新登录即可!!

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3