命令历史
shell进程会保存其会话中用户曾经执行过的命令;命令通过其“历史文件”来持久保存此前执行过的命令;每个用户都有其自己专用的历史文件;
缓冲区中的命令会在shell退出的保存在文件中 .bash_history
查看命令历史列表 history
常用选项:
-d 数字 删除第数字条记录
-c 清空history列表
-a:追加当前回话的命令到历史列表中去
-n:读取所有在回话列表中的但是不在当前回话列表中的
-w : 保存历史列表到指定的历史文件
-p: 展开历史参数成多行,但不存在历史列表中
-s:展开历史参数成一行,附加在历史列表后
!数字:执行history中第数字条的命令
!!:执行上一条命令
!-数字:表示执行命令列表中的倒数第几条数字命令
!$:执行上个命令中的最后一个参数:ESC,.
ESC,. 先按Esc键后松开,然后按.键 (效果和!$等价)
!string:执行命令列表中的最近一次以string开头的命令
!:0 执行前一条命令(去掉参数)
!?string 执行前一个包含string的命令
!string:p 仅打印命令历史,而不执行
!*:p 打印输出 !* (上一条命令的所有参数)的内容
^string 删除上一条命令中的第一个string
^string1^string2 将上一条命令中的第一个string1替换为string2
!:gs/string1/string2 将上一条命令中的所有string1都替换为string2
ctrl+r 命令历史中搜索
ctrl+g 从历史搜索模式退出
!^ 调用上一个命令的第一个参数做为命令的参数
!* 调用上一个命令的全部参数做为命令的参数
!:n 调用上一个命令的第n个参数做为命令的参数
!n:^ 调用第n条命令的第一个参数
!n:$ 调用第n条命令的最后一个参数
!n:m 调用第n条命令的第m个参数
!n:* 调用第n条命令的所有参数
!string:^ 从命令历史中搜索string 开头的命令,并获取它的第一个参数
!string:$ 从命令历史中搜索string 开头的命令,并获取它的最后一个参数
!string:n 从命令历史中搜索string 开头的命令,并获取它的第n个参数
!string:* 从命令历史中搜索string 开头的命令,并获取它的所有参数
命令历史相关的环境变量
HISTSIZE:历史命令中可以保存的个数
HISTFILE: 历史命令保存的文件
HISTFILESIZE:历史文件中可以保存的命令个数
HISTTIMEFORMAT="%F %T " 显示时间
HISTIGNORE="str1:str2*" 忽略str1命令,str2开头的历史
HISTCONTROL:控制命令历史的生成机制
ignoredups:忽略记录重复的命令,连续的相同命令
ignorespace:以空格开头的命令不会被记录
ignoreboth:同时具有上面两种特性
erasedups:删除重复命令