history命令管理及用法总结
命令历史:shell进程会在其会话中保存此前用户提交执行过的命令,可以用它来重复执行命令;包括关机之前的指令
~]# history
示例
定制history的功能,可通过改变环境变量的具体值来实现:
环境变量 | 意义 |
---|---|
HISTSIZE | shell进程可保留的命令历史的条数 |
HISTFILE | 持久保存命令历史的文件 |
HISTFILESIZE | 命令历史文件的大小 |
HISTTIMEFORMAT=“%F %T “ | 显示时间 |
HISTIGNORE=“str1:str2:… “ | 忽略str1命令,str2开头的历史 |
控制命令历史记录的方式:
赋予环境变量 HISTCONTROL不同的值即可改变命令历史记录的方式;
修改变量的值的方式:NAME='VALUE',如HISTCONTROL=ignorespace
环境变量值 | 意义 |
---|---|
ignoredups | 忽略重复的命令 |
ignorespace | 忽略以空白字符开头的命令 |
ignoreboth | 以上两者同时生效 |
erasedups | 删除重复命令 |
登录shell时,会读取命令历史文件中记录下的命令,命令历史文件路径为.bash_history
~]# cat .bash_history
登录进shell后新执行的命令只会记录在缓存中;这些命令会用户退出时“追加”至命令历史文件中
命令用法:
history [-c] [-d 偏移量] [n]
选项 | 效果 |
---|---|
-c | 清空命令历史 |
-d offset | 删除历史中指定的第offset个命令 |
n | 显示最近的n条历史 |
示例:
示例:
history -anrw [文件名]
选项 | 效果 |
---|---|
-a | 追加本次会话新执行的命令历史列表至历史文件 |
-n | 读历史文件中未读过的行到历史列表 |
-r | 读历史文件附加到历史列表 |
-w | 保存缓存中的历史列表到指定的历史文件 |
history -ps 参数 [参数...]
选项 | 效果 |
---|---|
-p | 展开历史参数成多行,但不存在历史列表中 |
-s | 展开历史参数成一行,附加在历史列表后 |
调用命令历史列表中的命令或命令参数:
按键(键入) | 效果 |
---|---|
↑或↓ | 上下浏览从前输入的命令 |
!# | 再一次执行历史列表中的第#条命令 |
!:0 | 执行前一条命令(去除参数) |
!-n | 执行history历史中倒数第n个命令 |
!! | 再一次执行上一条命令 |
!STRING | 再一次执行命令历史列表中最近一个以STRING开头的命令 |
!STRING:p | 仅打印最近一个以STRING开头命令历史,而不执行 |
!?STRING | 重复前一个包含STRING的命令 |
!:gs/string1/string2 | 将上一条命令中所有的string1都替换为 string2 |
Ctrl + p | 翻出前一条命令 |
Ctrl + n | 显示当前历史中的下一条命令,但不执行 |
Ctrl + j | 执行当前命令 |
Ctrl + r | 在命令历史中搜索命令 |
Ctrl + g | 从历史搜索模式退出 |
!$或先按ESC,再按 .键或Alt+ .(按住Alt键的同时点击.键) | 调用上一条命令的最后一个参数 |
!$:p | 打印输出 !$ (上一条命令的最后一个参数)的内容 |
!*:p | 打印输出!*(上一条命令的所有参数)的内容 |
^string | 删除上一条命令中的第一个string |
^string1^string2 | 将上一条命令中的第一个string1替换为string2 |
注:Alt+ .的调用方式需在XShell中设置Meta键仿真,如下图所示
示例:
!STRING和!STRING:p
!:gs/string1/string2
!$:p
!*:p
转载于:https://blog.51cto.com/14231130/2367973