00. 目录
01. 命令概述
history命令用于显示用户以前执行过的历史命令,并且能对历史命令进行追加和删除等操作。
该命令单独使用时,仅显示历史命令,在命令行中,可以使用符号!
执行指定序号的历史命令。例如,要执行第2个历史命令,则输入!2
。
历史命令是被保存在内存中的,当退出或者登录shell时,会自动保存或读取。在内存中,历史命令仅能够存储1000条历史命令,该数量是由环境变量HISTSIZE
进行控制。
02. 命令格式
格式: history [选项] [参数]
- 1
03. 常用选项
-a 将当前shell会话的历史命令追加到命令历史文件中,命令历史文件是保存历史命令的配置文件
-c 清空当前历史命令列表
-d 删除历史命令列表中指定序号的命令
-n 从命令历史文件中读取本次Shell会话开始时没有读取的历史命令
-r 读取命令历史文件到当前的Shell历史命令内存缓冲区
-s 将指定的命令作为单独的条目加入命令历史内存缓冲区。
在执行添加之前先删除命令历史内存缓冲区中最后一条命令
-w 把当前的shell历史命令内存缓冲区的内容写入命令历史文件
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
04. 参考示例
4.1 查看历史命令
[deng@localhost ~]$ history
[deng@localhost ~]$
- 1
- 2
4.2 显示最近的5条命令
[deng@localhost ~]$ history 5
816 man history
817 help history
818 history
819 history
820 history 5
[deng@localhost ~]$
- 1
- 2
- 3
- 4
- 5
- 6
- 7
4.3 将当前历史写入到历史文件中
[deng@localhost ~]$ history -w
[deng@localhost ~]$
- 1
- 2
将当前历史写入到历史文件中并追加到历史列表中。
4.4 读取历史文件并将内容追加到历史列表中
[deng@localhost ~]$ history -r
[deng@localhost ~]$
- 1
- 2
4.5 将当前Shell会话的历史命令追加到命令历史文件中
[deng@localhost ~]$ history -a
[deng@localhost ~]$
- 1
- 2
4.6 删除所有条目从而清空历史列表
[deng@localhost ~]$ history -c
[deng@localhost ~]$ history
646 history
[deng@localhost ~]$
- 1
- 2
- 3
- 4
4.7 执行历史列表中646条命令
[deng@localhost ~]$ history
646 history
[deng@localhost ~]$ !646
history
646 history
[deng@localhost ~]$
- 1
- 2
- 3
- 4
- 5
- 6
4.8 执行最近一条历史命令
[deng@localhost ~]$ !!
history
646 history
647 history
648 ! -1
649 history
[deng@localhost ~]$
- 1
- 2
- 3
- 4
- 5
- 6
- 7
4.9 常用设置
$ export HISTCONTROL=ignoredups # 消除命令历史中的连续重复条目
$ export HISTSIZE=0 # 禁用history命令
$ export HISTCONTROL=erasedups # 在整个历史中去除重复命令
$ export HISTFILESIZE=1000000 # 设置历史文件大小
$ export HISTTIMEFORMAT='%F %T' # 设置时间戳,执行后生效
$ export HISTTIMEFORMAT="%F %T `whoami`" # 显示执行用户,对管理员很有用
$ export HISTIGNORE=“pwd:ls:” # 忽略特殊命令,只忽略ls并不忽略ls -lart
$ export HISTCONTROL=ignorespace # 忽略某条特定命令
$ export HISTFILE=/root/history.txt # 设置历史文件的存储目录
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
4.10 常用参数
$ !! # 前一条命令;
$ !:0 # 不带参数的前一条命令名;
$ !^ # 前一条命令的第一个参数;
$ !:n # 前一条命令的第n个参数;
$ !$ # 前一条命令的最后一个参数;例如 $ mkdir test; cd !$
$ !* # 前一条命令的所有参数,命令名除外;
$ !n # 第n条命令;
$ !-n # 倒数第n条命令;
$ !str # 最近一条以str开头的命令;
$ !?str # 最近一条包含str的命令;
$ ^a^b # 将上一条命令名中的a替换为b;
$ !:gs/a/b # 将上一条命令的所有a替换为b(包含命令名和参数)。
$ !:3 # 第三个参数数
$ !:2-4 # 第2到4个参数
$ !:-3 # 从第0个到第三个参数
$ !* # 第一个到最后一个参数
$ !:2* # 第2个到最后一个
$ !:2- # 从第2个开始,但不要结尾参数
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
评论记录:
回复评论: