shell进程会在其会话中保存此前用户提交执行过的命令,可以用它来重复执行命令;包括关机之前的指令。在exit之前,你所操作的历史命令都是储存在内存中,所以你只需要history就能找到在这之前的命令,exit之后,内存中的历史命令会保存在.bash_history中,以便再次登录能够查看之前操作的历史命令。
现在就让我们看看history命令的具体用法
history [-c] [-d offset] [n]
history -anrw [filename]
history -ps [arg]
-c 清空历史命令
-d offset 删除历史命令中的第offset个命令
n 显示最近的n条命令
-a 追加本次会话新执行的命令历史列表中至历史文件
-r 读取历史文件附加到历史列表
-w 保存历史列表到指定的历史文件
-n 读取历史文件中未度过的行到历史列表
-p 展开历史参数成多行,但不存在历史列表中
-s 展开历史参数或行附加到历史列表后
还有历史命令相关的环境变量
HISTSIZE 历史命令记录的数量
HISTFILE 指定历史命令文件(默认为~/.bash_history)
HISTFILESIZE 命令历史文件记录历史的数量
HISTGNORE="str1:str2*" 忽略str1,str2开头的历史
HISTCONTROL
ignoredups(默认) :忽略重复的命令,注:连续相同的为重复
igonrespace :忽略所有空白开头的命令
igonreboth :二者合一
erasedips :删除重复命令
基于历史命令的一些命令,及用法
重复前一个命令
1、向上方向键
2、!!
3、! -1
4、ctrl +p
!:0 执行前一条命令(去除参数)
ctrl+n 显示当前历史命令中的下一条命令
ctrl+j执行当前命令
!n 执行历史命令中第n条历史命令
!-n 执行历史命令中倒数n条历史命令
!string 重复前一个一“string”开头的命令
!?string 重复前一个包含“string”的命令
!string:p 仅打印历史命令但不执行
!$:p 打印输出!$(上一个命令的最后一个参数)的内容
! :p 打印输出!(上一条命令所有参数)的内容
^string 删除上一条历史命令中第一个string
^string1^string2 将上一条历史命令中的第一个string1替换为string2
!:gs/string1/string2 将上一条历史命令中所有的string1替换为string2
ctrl + r 搜索历史命令
ctrl + g 退出历史搜索模式
重新调用前一个命令中最后一个参数:!$