shell
进程会在其会话中保存此前用户提交的命令。
$ type history
# history 是 shell 内嵌
$ history
定制 history
的功能,可以通过环境变量来实现。
HISTSIZE
:shell
进程可保留的命令历史条数;HISTFILE
:持久保留命令历史的文件,每个用户执行的命令历史都保存用户的家目录下;每次开机的时候(或者是打开一个新的终端的时候),都会将HISTFILE
文件中的命令历史读取到shell
进程中来;用户登出shell
的时候会将shell
进程中的命令保存到HISTFILE
文件中。HISTFILESIZE
: 文件中可以保存的历史命令长度
操作历史命令
命令使用:
- history [-c] [-d 偏移量] [n]
- history -anrw [文件名]
- history -ps 参数 [参数…]
命令参数:
history -c
清空 shell 进程内存中的命令,对 HISTFILE 文件没有影响history -d
删除指定条目的历史命令,n 表示要删除的数量,默认是当前行,对 HISTFILE 文件没有影响history -r
重新读取 HISTFILE 文件中的命令到历史列表中history -w
将shell
进程中的命令追加至历史文件中history #
显示指定条目的最近执行的历史命令
调用历史命令
注意:命令的重复执行有时候需要依赖于命令执行结果的幂等性
!#
再一次执行历史列表中的第 # 条命令!!
执行上一条命令!STR
再次执行命令历史列表中最近的一个以 STR 开头的命令
调用上一条命令的最后一个参数
ESC .
快捷键!$
控制命令历史记录的方式
环境变量:HISTCONTROL
ignoredups
: 忽略重复的命令,一般是默认值ignorespace
: 忽略以空白字符开头的命令ignoreboth
: 以上两者
使用
NAME=‘VALUE’
设置bash
的环境变量的值只对当前进程生效,export NAME='VALUE'
对当前进程及子进程生效,如果要对所有生效,需要写入/etc/profile
或者/etc/bashrc
或者用户名下的.bashrc