Linux中的history命令
简介
history用于显示历史记录和执行过的指令命令, history命令是被保存在内存中的,当退出或者登录shell时,会自动保存或读取。在内存中,历史命令仅能够存储1000条历史命令,该数量是由环境变量 HISTSIZE进行控制。
1 | exort HISTSIZE=5 #设置只记录5条历史命令 |
如想查询某个用户在系统上执行了什么命令,可以使用root用户身份登录系统,检查Home目录下的用户主目录下的“.bash_history”文件,该文件记录了用户所使用的命令和历史信息。
命令用法:直接输入history查看
参数 | 参数说明 | 备注 |
---|---|---|
n | 显示历史记录中最近的N个记录,例如 history 5 | |
-c | 清空当前历史命令 | |
-a | 将历史命令缓冲区中命令写入历史命令文件中 | |
-r | 将历史命令文件中的命令读入当前历史命令缓冲区 | |
-w | 将当前历史命令缓冲区命令写入历史命令文件中 | |
-d | 删除历史记录中第offset个命令 | |
-n | 读取指定文件 |
示例
举例1:不加参数,查看历史命令
1 2 3 4 5 | [root@web03 ~]# history 1 ping baidu.com 2 ls 3 df -h 4 systemctl get-default |
举例2:history后直接跟数字,查看历史命令最后5条
1 2 3 4 5 6 7 | [root@docker35 ~]# history 5 9447 2022-04-14 09:22:45 root cat /etc/passwd 9448 2022-04-14 09:22:53 root su - lhr 9449 2022-04-14 09:39:52 root history 9450 2022-04-14 09:43:13 root more .bash_history 9451 2022-04-14 09:45:25 root history 5 [root@docker35 ~]# |
举例3:!number,执行指定的第几条历史命令
1 2 3 4 5 | [root@web03 ~]# !8 #执行历史命令第8条 df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/centos-root 14G 4.0G 11G 29% / devtmpfs 977M 0 977M 0% /dev |
举例3:!!,执行上一条历史命令
1 2 3 4 5 | [root@web03 ~]# !! df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/centos-root 14G 4.0G 11G 29% / devtmpfs 977M 0 977M 0% /dev |
举例4:-d,删除指定第几条记录
1 | [root@web03 ~]# history -d 5 |
显示执行历史记录时间
1、默认情况下,history并不记录命令的执行时间,分析起来很困难。我们可以使用HISTTIMEFORMAT
在历史中显示TIMESTAMP
。
2、把上面的 export HISTTIMEFORMAT="%F %T "
命令加入到~/.bashrc
中即可在登录后自动开启history时间戳了。添加完成后,执行source .bashrc
让其生效。仅针对当前账号有效。
1 2 3 4 5 6 7 8 9 | cat >> /etc/profile <<"EOF" export HISTTIMEFORMAT="%F %T " EOF [root@web03 ~]# history 1 2019-04-04 13:50:09 ping baidu.com 2 2019-04-04 13:50:09 ls 3 2019-04-04 13:50:09 df -h 4 2019-04-04 13:50:09 systemctl get-default |
这里:
- %F 将以 YYYY-MM-DD 格式显示日期;
- %T 以 HH:MM:SS 格式显示时间。
3、其实HISTTIMEFORMAT
的格式就是 strftime
函数的格式,比如上面的"%F %T ",%F表示显示出Y-M-D格式的日期,%T表示显示出H-M-S这样格式的时间。
4、用Ctrl+R搜索历史命令;当你执行了一串相当长的命令之后,你只要用关键字搜索一下历史命令然后重新执行这条命令而不需要将整条命令再输一遍。方法是:按下Ctrl+R然后输入关键字。如搜索”date”,则显示历史的命令中含有”date”的命令 date “+今天是:%F,%A,时间是:%T.准备吃饭去”。按回车,就可以重新执行这条命令了,而按左箭头键或右箭头键则可以直接修改,改完之后按回车执行,非常方便!
【注:在命令行提示符下按下Ctrl+R,终端将显示如下提示reverse-i-search】