命令历史:shell进程会其会话中保存此前用户提交执行过的命令;例如:通过上下左右的方向键,可以查找之前输入过的命令。

histroy \查看之前使用过的命令
history [-c] [-d 偏移量] [n]
或 history -anrw [文件名]
或 history -ps 参数 [参数…]
定制histroy的功能,可以通过环境变量实现:
HISTSIZE:shell进程可以保留命令历史的条数;(存在内存中)重启后消失。

1.png
HISTFILE:持久保存命令历史的文件;.bash_history,重启后会加载该文件中的命令历史。这个文件会保存在用户的目录下面。

2.png
HISTFILESIZE:命令历史文件的大小;(存在文件中)

3.png
用户登出的时候,会将内存的命令历史,写入到命令的历史文件中去。

~]# history -c 清历所有历史命令;
~]# history -d 304 清空某个历史命令;
~]# history -r 将文件中的读取命令历史,并添加到内存的历史列表中。
~]# history -w 将内存中的命令历史列表,覆盖到命令历史文件中。
~]# history -a 把新增的缓存,追加到历史文件中。

调用命令历史列表中的命令。
!#:再一次执行历史列表中的第#条命令。#可以为-1 -2 -3 -4.。。等代替,表示为到数第几条命令。
!!:再一次执行上一条命令。
!STRING:再一次执行命令历史列表中最近一个以STRING开头的命令。

注意:命令的重复执行有时候需要依赖于幂等性;

调用上一条命令的最后一个参数。
字符串:!$

4.png
控制命令历史记录的方式:
环境变量:HISTCONTROL
ignoredups:忽略重复的命令,连续输入的命令才会被忽略。
ignorespace:忽略以空白字符开头的命令;
ignoreboth:以上两者同时生效;
用法:
]# export HISTCONTROL=ignoreboth
查看当前的历史变量:
]#echo $HISTCONTROL