history命令–显示与操作历史命令

history命令用于显示用户以前执行过的历史命令,并且能对历史命令进行追加和删除等操作。

常用参数:

参数
描述

-a

将当前shell会话的历史命令追加到命令历史文件中,命令历史文件是保存历史命令的配置文件

-c

清空当前历史命令列表

-d

删除历史命令列表中指定序号的命令

-n

从命令历史文件中读取本次Shell会话开始时没有读取的历史命令

-r

读取命令历史文件到当前的Shell历史命令内存缓冲区

-s

将指定的命令作为单独的条目加入命令历史内存缓冲区。在执行添加之前先删除命令历史内存缓冲区中最后一条命令

-w

把当前的shell历史命令内存缓冲区的内容写入命令历史文件

参考实例 显示最近的命令:

history 10  
history | more
history | less
history | head
history | tail

将本次登录的命令写入历史文件中:

history -w

将命令历史文件中的内容读入到目前shell的history记忆中 :

history -r  

将当前Shell会话的历史命令追加到命令历史文件中:

history -a  

清空当前历史命令列表:

history -c 

重复上一个命令:

!!

使用它的编号重复执行先前的命令:

!123

运行匹配给定字符串的命令:

docker ps
docker images
!? ps	# 这时用!docker则会执行docker images这一条,而使用!? ps, 则可以匹配到docker ps这一条历史命令

替换字符串并运行先前执行的命令:

!!:s|string1|string2|	# 用string2替换上一条命令中的string1
^string1^string2	# 作用同上

!827:s|string1|string2|	# 用string2替换第827条命令中的string1

不记录操作记录

[space]set +o history

备注:[space] 表示空格。并且由于空格的缘故,该命令本身也不会被记录。 如果在命令前加空格仍会记录到history中,则需要修改bashrc的内容

echo HISTCONTROL=ignorespace >> ~/.bashrc 
source ~/.bashrc

上面的命令会临时禁用历史功能,这意味着在这命令之后你执行的所有操作都不会记录到历史中,然而这个命令之前的所有东西都会原样记录在历史列表中。

要重新开启历史功能,执行下面的命令:

[Space]set -o history

它将环境恢复原状,也就是你完成了你的工作,执行上述命令之后的命令都会出现在历史中。

清除linux操作记录

set +o history # 开启不记录操作信息
history # 查看set +o history命令的编号
history -d $NUMBER # 删除set +o history命令的记录

# 清除下面三个记录之后无法通过安全日志、last命令以及重新登录后的last login来查看上一次登录信息
echo > /var/log/secure
echo > /var/log/wtmp
echo > /var/log/lastlog

最后更新于