前言

history:管理用户在控制台输入的命令历史记录,包含存储、删除、查看、搜索等操作功能。


一、history使用说明

我们在控制台执行命令:

help history

运行结果:

history: history [-c] [-d 偏移量] [n]history -anrw [文件名]history -ps 参数 [参数...]
    显示或操纵历史列表。
    
    带行号显示历史列表,将每个被修改的条目加上前缀 `*'。
    参数 N 会仅列出最后的 N 个条目。
    
    选项:
      -c        删除所有条目从而清空历史列表。
      -d 偏移量 从指定位置删除历史列表。
    
      -a        将当前绘画的历史行追加到历史文件中
      -n        从历史文件中读取所有未被读取的行
      -r        读取历史文件并将内容追加到历史列表中
        中
      -w        将当前历史写入到历史文件中
        并追加到历史列表中
    
      -p        对每一个 ARG 参数展开历史并显示结果
        而不存储到历史列表中
      -s        以单条记录追加 ARG 到历史列表中
    
    如果给定了 FILENAME 文件名,则它将被作为历史文件。否则
    如果 $HISTFILE 变量有值的话使用之,不然使用 ~/.bash_history 文件。
    
    如果 $HISTTIMEFORMAT 变量被设定并且不为空,它的值会被用于
    strftime(3) 的格式字符串来打印与每一个显示的历史条目想关联的时
    间戳,否则不打印时间戳。
    
    退出状态:
    返回成功,除非使用了无效的选项或者发生错误。

这里我们整理一下具体的命令使用:

二、使用实例

1.查看最近使用的10条命令

history 10

结果:

1016  n v14.15.0
1017  node -v
1018  n 14.15.0
1019  node -v
1020  set +o history;
1021  history -5
1022  history -n 10
1023  history -n10
1024  history -n 10
1025  history 10

这里前面的数字是序号,后面是执行的命令,这里,在centos下面默认就是10,那个10可以改成其他数字

2.快捷执行、搜索历史命令

  • 第一种:!序号
!1017
  • 第二种:ctrl+r
    搜索历史,在控制台下按住ctrl+r就会出现下面情况:
(reverse-i-search)`node': node -v
  • 第三种:! 字符串
    这也是一种搜索方式,如下:
[root@localhost test-vue]# !his
history 10
 1020  set +o history;
 1021  history -5
 1022  history -n 10
 1023  history -n10
 1024  history -n 10
 1025  history 10
 1026  ! node
 1027  ! node -v
 1028  node -v
 1029  history 10

3.清空命令

清空所有

history -c

清空固定行,将1028行的命令清空

history -d 1028

三、history环境变量配置

1、修改文件地址:HISTFILE

默认情况,history的数据是存放在~/.bash_history文件中,可以通过查看HISTFILE环境变量来查看:

echo $HISTFILE
/root/.bash_history

这个文件也可以进行修改:

vim ~/.bash_profile

插入:

export HISTFILE=/opt/bash_history

2、修改存储数量:HISTSIZE

默认情况,history的存储数量是1000,通过HISTSIZE环境变量查看:

echo $HISTSIZE
1000

如要修改,依然是修改~/.bash_profile文件:

export HISTSIZE=5000

3、修改数据存储格式:HISTTIMEFORMAT

增加:

export HISTTIMEFORMAT="%Y-%m-%d %H:%M:%S"

4、忽略特定命令:HISTIGNORE

如果我们不想将某些命令被记录下来,可以进行配置:

export HISTIGNORE="ls:cd"

多个命令之间用冒号隔开

5、控制数据记录策略:HISTCONTROL

主要分为以下几种策略:

  • ignoredups:忽略重复的命令。
  • ignorespace:忽略以空格开头的命令。
  • erasedups:在保存命令到历史记录之前,先删除与前一条命令相同的命令。
  • ignoreboth:忽略重复的命令和以空格开头的命令。

配置如下:

export HISTCONTROL="ignoredups:erasedups"

总结

history最常用的功能就是快捷执行和命令搜索,其他的系统变量如果没有特殊要求可以不需要修改。

03-13 08:34