听说你还不知道history的强大? 你还不知道谁在你linux上操作了什么?(1)

本文详细介绍了Linux命令行历史记录的工作原理,包括查看、保存、删除缓冲区历史记录的方法,以及如何安全地搜索和重复执行历史命令,以及控制历史记录的总数。
摘要由CSDN通过智能技术生成
  • 控制历史记录总数

  • 更改历史记录文件名

  • 禁用历史记录

  • 黑客必知的一个小技巧

  • 总结

  • 最后

基本原理

===================================================================

在这里插入图片描述

  • Linux 命令的历史记录,会持久化存储,默认位置是当前用户家目录的 .bash_history文件。

  • 当 Linux 系统启动一个 Shell 时,Shell 会从.bash_history文件中,读取历史记录,存储在相应内存的缓冲区中。

  • 我们平时所操作的 Linux 命令,都会记录在缓冲区中。包括 history 命令所执行的历史命令管理,都是在操作缓冲区,而不是直接操作.bash_history文件。

  • 当我们退出 Shell,比如按下 Ctrl+D 时,Shell 进程会把历史记录缓冲区的内容,写回到.bash_history文件中去。

【所以现在你应该知道,永久删除记录该咋做了吧?】

使用详解

===================================================================

清楚了 history 的基本原理,我们来具体学习一下如何使用它。

基础用法


查看记录&查看指定行

  • 直接输入 history 命令,可以看到最近操作的所有命令都显示出来了

root@ccx ~]# history

1 bash

2 ls

3 vim .bash_history

4 cat .bash_history

5 history

6 bash

  • 有时候我不需要显示所有的历史命令,只显示最后的 10 条历史记录,可以在命令后加数字 N 即可

root@ccx ~]# history 10

主动保存缓冲区

正常情况下,只有在 Shell 正常退出时,才会将缓冲区内容保存到文件。如果你想主动保存缓冲区的历史记录,执行 -w 选项即可

root@ccx ~]# history -w

删除缓冲区

当然,如果你执行了一些敏感的命令操作,可以执行 -c 将缓冲区内容直接删除

root@ccx ~]# history -c

重复执行某命令


  • 如果要重复执行一些命令,可以使用!来快速执行重复的命令。

  • 举个例子,重复执行第 1024 历史命令,可以执行如下命令

root@ccx ~]# !1024

#1024 这个编号的命令内容是可以通过 history 查看哦

  • 重复执行上一条命令

root@ccx ~]# !!

  • 重复执行倒数第 6 条历史命令,可以通过负数表示,-6 表示倒数第 6 条记录

root@ccx ~]# !-6

搜索历史命令


  • 有时候,需要重复执行某字符串开头的最后一个命令,同样可以通过 ! 来操作,然后按 Enter 执行即可

比如,刚才执行了一个很长命令,只记录命令开头是 curl,这时就可以通过 !curl 快速执行该命令

假设我最后一次执行的是 curl 1.1.1.1

root@ccx ~]# !curl

上面命令呢就是会执行curl 1.1.1.1

  • 这个用法很高效,但存在不安全因素,因为有可能执行的命令不是你想要执行的,那就坏事了。可以通过:p 来安全地执行。

root@ccx ~]# !curl:p

curl 1.1.1.1

#加上 :p 后,只是打印出了搜索到的命令,如果要执行,请按 ↑ 键,然后回车即可。

  • 如果你只知道某条命令包含了 x 信息,不是以 x 开头,同样可以通过 ? 来执行包含字符串的命令

root@ccx ~]# ?x

  • 其实更多的呢 都是喜欢用grep来搜索histoart | grep x,得到含有x的所有历史命令内容及前面序号以后,然后再用!序号来快速执行该命令。

交互式搜索历史命令


  • 在 Linux 搜索历史命令,还可以通过交互式的搜索方式,简直高效直接。在命令行输入 Ctrl+R后,进入交互界面,键入需要搜索的关键字,如果匹配到多条命令,可以多次键入Ctrl+R 来切换上一条匹配的命令。

(reverse-i-search)`sina’: echo sina

可以看到,我输入了 sina 后,就自动匹配到最近一次和 sina 匹配的命令,这时按下回车就可以执行该命令。

显示时间戳


  • 有时候需要对 Linux 系统做审计,那为历史记录添加时间戳,显示非常有用。

root@ccx ~]# export HISTTIMEFORMAT='%F %T ’

root@ccx ~]# history 3

46 2022-01-11 18:21:33 curl baidu.com

47 2022-01-11 18:21:35 pwd

48 2022-01-11 18:21:39 history 3

  • 可以看到,历史记录已经显示了时间戳。其实这些对于审计需求,还不够,可以加上更详细的信息:

root@ccx ~]# export HISTTIMEFORMAT="%F %T who -u am i 2>/dev/null| awk '{print root@ccx ~]#NF}'|sed \-e 's/[()]//g' whoami "

6 2022-01-11 18:22:48 113.200.44.237 root ls

7 2022-01-11 18:22:59 113.200.44.237 root pwd

8 2022-01-11 16:08:14 113.200.44.237 root history

控制历史记录总数


最全的Linux教程,Linux从入门到精通

======================

  1. linux从入门到精通(第2版)

  2. Linux系统移植

  3. Linux驱动开发入门与实战

  4. LINUX 系统移植 第2版

  5. Linux开源网络全栈详解 从DPDK到OpenFlow

华为18级工程师呕心沥血撰写3000页Linux学习笔记教程

第一份《Linux从入门到精通》466页

====================

内容简介

====

本书是获得了很多读者好评的Linux经典畅销书**《Linux从入门到精通》的第2版**。本书第1版出版后曾经多次印刷,并被51CTO读书频道评为“最受读者喜爱的原创IT技术图书奖”。本书第﹖版以最新的Ubuntu 12.04为版本,循序渐进地向读者介绍了Linux 的基础应用、系统管理、网络应用、娱乐和办公、程序开发、服务器配置、系统安全等。本书附带1张光盘,内容为本书配套多媒体教学视频。另外,本书还为读者提供了大量的Linux学习资料和Ubuntu安装镜像文件,供读者免费下载。

华为18级工程师呕心沥血撰写3000页Linux学习笔记教程

本书适合广大Linux初中级用户、开源软件爱好者和大专院校的学生阅读,同时也非常适合准备从事Linux平台开发的各类人员。

需要《Linux入门到精通》、《linux系统移植》、《Linux驱动开发入门实战》、《Linux开源网络全栈》电子书籍及教程的工程师朋友们劳烦您转发+评论

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以点击这里获取!

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值