系列文章目录
命令1: linux基本功系列-ls命令实战
命令2: linux基本功系列之echo命令实战
命令3:linux基本功之历史记录history命令实战
前言
大家好,我是沐风晓月,一个爱学习的英专在读生
平时除了吃饭,睡觉,都是学习哦,快关注我,要不然以后没位置了。
今天我们一起来看看历史记录命令history,以及一些常用的快捷键,不得不说,快捷键掌握起来就好好用。
:smile:
当然我们平时敲的命令都会被历史记录保存下来,我们一起来学习下:
`
一、history作用
- 用于显示历史记录和执行过的指令命令
- 当登录shell或者是退出的时候会自动进行读取和存储
二、history常用语法
1. 常用语法
# history (选项)(参数)
2. 常用参数
代码如下(示例):
n 显示最近的N条记录
-a 将历史命令缓冲区中命令写入历史命令文件中
-c 将目前的shell中的所有 history 内容全部消除 (并非真的删除)
-r 将历史命令文件中的命令读入当前历史命令缓冲区
-w 将当前历史命令缓冲区命令写入历史命令文件中
-d 删除历史记录的指定行
3. 部分案例
3.1 获取历史记录的最新两条记录
[root@mufenggrow ~]# history 2
9 cd
10 history 2
这种方式获取的最新两条记录,也会把最后一条命令算上了。
3.2 清除全部历史记录
-c 参数是清空所有历史记录
[root@mufenggrow ~]# history -c
[root@mufenggrow ~]# history
1 history
[root@mufenggrow ~]#
这种方式类似 与clear,并不会把文件中的历史记录删除,如果要真正的历史记录,需要用本文中第4条关于history的配置文件。
3.3 删除某一行数据
比如删除第358行数据
[root@mufenggrow ~]# history -d 358
4. 关于history的配置文件
所有我们用history命令看到的历史记录,都默认保存在:
~/.bash_history
如果是root用户就是在/root/.bash_history
直接删掉这个文件会清除所有历史记录,再登陆系统会自动重新生成这个文件。
Linux 命令的历史记录,会持久化存储,默认位置是当前用户家目录的 .bash_history 文件。
当 Linux 系统启动一个 Shell 时,Shell 会从 .bash_history 文件中,读取历史记录,存储在相应内存的缓冲区中。
我们平时所操作的 Linux 命令,都会记录在 缓冲区 中。包括 history 命令所执行的历史命令管理,都是在操作 缓冲区 ,而不是直接操作 .bash_history 文件。
当我们退出 Shell,比如按下 Ctrl+D 时,Shell 进程会把历史记录缓冲区的内容,写回到 .bash_history 文件中去。
5. 隐藏历史记录实战
想要隐藏某条历史记录,会用到set +o
set +o history 表示开始隐藏
set -o history 表示结束隐藏
[root@mufenggrow ~]# set +o history ## 设置开启隐藏
[root@mufenggrow ~]# mysql -uroot -p123456
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
## 这里的MySQL报错是因为没有MySQL服务
[root@mufenggrow ~]# history 3
1 history
2 history -d 358
## 查看历史记录发现没有刚才执行的带有密码的MySQL命令
[root@mufenggrow ~]# set -o history
## 取消history
[root@mufenggrow ~]# mysql -uroot -p123456
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
[root@mufenggrow ~]# history 3
3 mysql -uroot -p123456
4 histroy 3
5 history 3
## c此时发现有刚才执行过的MySQL命令
6. linux命令审计
有时候我们需要对 Linux 系统做审计,那为历史记录添加时间戳,就非常有用。
6.1 显示历史记录的时间
export HISTTIMEFORMAT='%F %T '
[root@mufenggrow ~]# export HISTTIMEFORMAT='%F %T '
[root@mufenggrow ~]# ping www.baidu.com
PING www.baidu.com (110.242.68.3) 56(84) bytes of data.
64 bytes from 110.242.68.3 (110.242.68.3): icmp_seq=1 ttl=52 time=26.4 ms
^C
--- www.baidu.com ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 26.470/26.470/26.470/0.000 ms
[root@mufenggrow ~]# history 3
17 2023-01-11 16:46:52 export HISTTIMEFORMAT='%F %T '
18 2023-01-11 16:46:57 ping www.baidu.com
19 2023-01-11 16:47:03 history 3
[root@mufenggrow ~]#
6.2 控制历史记录的总数
echo $HISTSIZE 查看历史记录总数
[root@mufenggrow ~]# echo $HISTSIZE
1000
[root@mufenggrow ~]# export HISTISIZE=100
做审计的时候我们适当把记录总数调大
想要永久生效:
echo "export HISTSIZE=10000" >> ~/.bash_profile
source ~/.bash_profile
总结
今天我们一起探讨的是历史记录的命令history,后续我们在做审计的时候用到的比较多,平时可以直接执行hsitory查看历史记录也比较方便。
好了,下次再见了,我是沐风晓月。