命令历史:shell进程会在其会话中保存此前用户提交执行过的命令;
~]#history
定制history的功能,可通过环境变量实现;
HISTSIZE:shell进程可保留的命令历史的条数;
~]# echo $HISTSIZE
1000
HISTFILE:持久保存命令历史的文件;
.bash_history
~]# cat .bash_history
HISTFILESIZE:命令历史文件的大小;
~]# echo $HISTFILE
/root/.bash_history
~]# echo $HISTFILESIZE
1000
命令用法:
history [-c] [-d 偏移量] [n]
或history -anrw [文件名]
或history -ps 参数 [参数...]
-a:追加本次会话新执行的命令历史列表至历史文件中
-c:清空命令历史;
-d:删除指定命令历史
-r:从文件读取命令历史至历史列表中
-w:把历史列表中的命令追加至历史文件中
history #:显示最近的#条命令
调用命令历史列表中的命令:
!#:再一次执行历史列表中的第#条命令
!!:再一次执行上一条命令:
!STRING:再一次执行命令历史列表中最近一个以STRING开头的命令
注意:命令的重复执行有时候需要依赖于幂等性;
调用上一条命令的最后一个参数;
快捷键:ESC,.
字符串:!$
控制命令历史记录的方式:
环境变量:HISTCONTROL
~]# echo $HISTCONTROL
ignoredups #忽略重复的命令;
ignorespace: 忽略以空格开头的命令
ignoreboth: 以上两者同时生效
修改变量的值:
NAME='VALUE'
~]#HISTCONTROL=ignorespace
命令示例:
可保留命令条数:
1
2
|
[root@note1 ~] # echo $HISTSIZE #保留1000条
1000 |
历史文件位置:
1
2
|
[root@note1 ~] # echo $HISTFILE #由于是隐藏文件,可使用ls -a查看
/root/ .bash_history
|
清空history:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
[root@note1 ~] # history -c #清空历史
[root@note1 ~] # history #没有命令了
1 history
[root@note1 ~] # cat -n .bash_history #清除的只是history中记录.bash_history没有清空
1 history
2 cat .bash_history
3 history -r
[root@note1 ~] # history -r #使用-r参数读书命令历史(.bash_history)到history中
[root@note1 ~] # history #再次输入history,能查看历史命令了
1 history
2 history -r
3 history
4 cat .bash_history
|
调用历史命令列表中的命令:
历史命令中第292条命令是curl -I www.baidu.com
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
290 echo $HISTFILE
291 echo $HISTFILESIZE
292 curl -I www.baidu.com
293 history
[root@note1 ~] # !292 #!292表示执行第292条历史命令
curl -I www.baidu.com HTTP /1 .1 200 OK
Server: bfe /1 .0.8.14
略 [root@note1 ~] # !curl #!curl表示执行最近一次带有curl的命令
curl -I www.baidu.com HTTP /1 .1 200 OK
Server: bfe /1 .0.8.14
略 |
调用上一条命令最后一个参数:
1
2
3
|
[root@note1 ~] # echo $HISTFILESIZE
1000 [root@note1 ~] # ls $HISTFILESIZE # $HISTFILESIZE参数是按ESC键再按.回车后显示的
|