文章目录
前言
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最常用的功能就是快捷执行和命令搜索,其他的系统变量如果没有特殊要求可以不需要修改。