清除history
history的历史命令默认保存在~/.bash_history文件中。
可以直接清空此文件内容的方式清空全部历史记录。下面是更方便的一些操作。
清除全部记录
history -c
本命令只能清除内存中的历史记录,只有在登出的时候才会改变.bash_history文件。
可以执行命令“history -w”立即更新这个文件。
删除某一行
history -d <line number>
让history记录操作时间
Linux下的History是使用频率较高的命令之后,可以回顾自己的操作,也可以快速取出一下前面操作过的命令。不过,默认设置没有记录操作的时间戳,下面是记录操作时间的办法。
设置办法
下面的内容设置到~/.bashrc文件仅对当前用户有效,写入到/etc/profile对所有用户有效
echo 'export HISTTIMEFORMAT="%F %T `whoami` "' >> ~/.bashrc && source ~/.bashrc
本设置生效后,当天最近一次登录后进行的操作,都在内存中,都有时间戳记录,所以可以记录正确时间。 上一次登录及以前的那些操作,会一律设置为这次最后一次登录后的第一次命令行操作的时间。
Tips: 如果没有做客户端登出操作的习惯,丢失连接后,内存中的命令行操作历史记录不会自动写入磁盘文件,会出现操作记录丢失的情况。建议用“history -w”强制写入磁盘文件。
时间参数解析
HISTTIMEFORMAT的参数有%F,%T,还有其它的参数可以用。
- %F:按照‘YYYY-M-D’ 显示日期
- %T:按照‘HH:MM:SS’ 显示时间
- %Y:4位数的年份;
- %m:2位数的月份数;
- %d:2位数的一个月中的日期数;
- %H:2位数的小时数(24小时制);
- %M:2位数的分钟数;
- %S:2位数的秒数
下面是例子,可以看到,以前的历史记录的时间都是一样的,是启动记录时间的那个时间。
增加历史记录的容纳件数
通过下面的命令查看记录的件数限制。
echo $HISTFILESIZE
echo $HISTSIZE
环境变量$HISTFILESIZE(文件容纳件数)默认值是2000件,$HISTSIZE(内存容纳件数)默认值是1000件
这里是Ubuntu 18 的~/.bashrc用户配置文件里面的设置内容,可以去确认一下。
# for setting history length see HISTSIZE and HISTFILESIZE in bash(1)
HISTSIZE=1000
HISTFILESIZE=2000
通过下面的方式可以立即修改这两个值。永久修改建议打开~/.bashrc文件,修改或者增加相关值,并用source命令进行刷新。
export HISTFILESIZE=5000
export HISTSIZE=2000
要对所有用户起效,修改/etc/profile文件并刷新。
只显示最近n条记录
history n
history 5
输出例子
10:03 mark@marklinux ~$ history 3
697 2020-02-25 09-40-45 history |grep -i sqlite3
698 2020-02-25 09-59-13 history 5
699 2020-02-25 10-03-24 history 3
再次执行最后一个命令
!!可以再次执行最后一个命令
!!
输出例子
10:04 mark@marklinux ~$ ls
gosrc nohup.out
10:04 mark@marklinux ~$ !!
ls
gosrc nohup.out
再次执行history中的某行命令
!n
输出例子
10:08 mark@marklinux ~$ history 5
701 2020-02-25 10-04-35 ls
702 2020-02-25 10-07-52 date
703 2020-02-25 10-08-01 ls
704 2020-02-25 10-08-32 nano ~/.bashrc
705 2020-02-25 10-08-51 history 5
10:08 mark@marklinux ~$ !702
date
Tue Feb 25 10:09:07 CST 2020
其它常用操作
将内存中的内容强制写入history文件
History保存过程的说明
1、当前session执行的命令,放置缓存中,执行exit时,把缓存信息写入~/.bash_history
2、当session直接被kill时(比如断网,客户端关机等),缓存中的历史命令不会写入~/.bash_history
3、history -w 可以主动将内存中的内容写入记录文件。
#强制写入~/.bash_history。避免session超时导致记录丢失。
history -w
#关闭shell连接,会把内存中的命令记录到~/.bash_history文件去
exit
参考1:17 Bash History Command Examples In Linux
参考2:history参数详解 https://www.computerhope.com/unix/uhistory.htm