1、history命令的设置
1.1、history命令有关的环境变量
root@:~$ env | grep "HIST*"
HISTCONTROL=ignorespace:erasedups
HISTSIZE=20
HISTFILE=/home/root/.bash_history
HISTFILESIZE=2000
HISTTIMEFORMAT="%F %T "
- 使用env命令可能看不到上面这些变量,因为env命令只会显示那些已经被设置的环境变量
- 可以使用echo $HISTCONTROL的方式来查看
- 也可以使用export命令将环境变量导出,这样就可以使用env命令查看:export HISTSIZE
1.2、设置历史命令记录文件
HISTFILE=/home/root/.bash_history
HISTFILESIZE=2000
- HISTFILE:history命令显示的历史命令是保存在文件里的,这里是设置文件的路径。可以使用cat命令来查看此文件
- HISTFILESIZE:设置保存历史命令的文件最大占用空间
1.3、设置历史记录命令条数
HISTSIZE=20
- HISTSIZE:设置history命令保存多少条历史命令
1.4、设置历史命令记录方式
HISTCONTROL=ignorespace:erasedups
- HISTCONTROL有以下的选项:
- ignoredups 默认,忽略重复命令
- ignorespace 忽略所有一空格开头的命令
- ignoreboth ignoredups 和 ignorespace 的组合
- erasedups 删除历史记录中重复命令,相同的指令仅保留最近的一个
- 如果同时设定多个选项,中间使用冒号:HISTCONTROL=ignorespace:erasedups
1.5、添加时间信息
daizhixin@:~$ history 1* export HISTCONTROL=ignorespace:erasedups!2 ls3* histor4 env | grep "HIST"5 echo $HISTTIMEFORMAT6 env7 history
daizhixin@:~$ export HISTTIMEFORMAT="%F %T "
daizhixin@:~$
daizhixin@:~$ history 1* 2025-01-31 21:13:05 export HISTCONTROL=ignorespace:erasedups!2 2025-01-31 21:13:30 ls3* 2025-01-31 21:16:04 histor4 2025-01-31 21:39:59 env | grep "HIST"5 2025-01-31 22:05:23 echo $HISTTIMEFORMAT6 2025-01-31 22:24:46 env7 2025-01-31 22:33:30 export HISTTIMEFORMAT="%F"8 2025-01-31 22:33:40 export HISTTIMEFORMAT="%F "9 2025-01-31 22:35:00 export HISTTIMEFORMAT="%F %T"10 2025-01-31 22:35:08 export HISTTIMEFORMAT="%F %T "11 2025-01-31 22:35:10 history
HISTTIMEFORMAT用于在bash shell中定义history命令的时间戳格式。这里的%F表示日期(格式为yyyy-mm-dd),%T表示时间(格式为HH:MM)
2、history命令使用方式
2.1、查看历史命令
root@:~$ history 1 export HISTCONTROL=ignorespace:erasedups2 ls3 env | grep "HIST"4 history
2.2、清楚已经缓存的历史命令
history -c
2.3、执行存储的第n条命令
root@:~$ history 1 export HISTCONTROL=ignorespace:erasedups2 ls3 env | grep "HIST"4 history
root@:~$
root@:~$
root@:~$ !3
env | grep "HIST"
HISTCONTROL=ignorespace:erasedups
HISTSIZE=30
HISTFILE=/home/root/.bash_history
HISTFILESIZE=2000
感叹号后面跟缓存命令的编号
2.4、执行最近特定开头的命令
daizhixin@:~$ history 1 export HISTCONTROL=ignorespace:erasedups2 ls3* histor4 env5 env | grep "HIST"6 history
daizhixin@:~$
daizhixin@:~$
daizhixin@:~$ !env
env | grep "HIST"
HISTCONTROL=ignorespace:erasedups
HISTSIZE=30
HISTFILE=/home/daizhixin/.bash_history
HISTFILESIZE=2000
daizhixin@:~$
!command 从最近的命令查到以command开头的命令执行
2.5、执行上一条命令
daizhixin@:~$ history 1* export HISTCONTROL=ignorespace:erasedups!2 ls3* histor4 env5 env | grep "HIST"6 history
daizhixin@:~$
daizhixin@:~$ !!
history 1* export HISTCONTROL=ignorespace:erasedups!2 ls3* histor4 env5 env | grep "HIST"6 history
连续两个感叹号执行上一条命令