玩转History命令

清除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

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值