history 命令可用于浏览历史执行过的命令,该命令在 Bourne Shell 中不可用,但 Bash 和 Korn 则支持该特性。在 Bash 和 Korn 中,每一次命令的执行都被视为一次事件,并且配有相应的事件号(Event Number)。在需要的情况下,可以通过事件号将执行过的命令再次执行。
不带选项的 history 会在终端输出所有执行过的历史命令。
选项
-d
如果要删除一个历史执行命令,可在-d 选项后面可以接一个命令关联的事件号,如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
| $ history
518 echo 222
519 echo 333
520 echo 444
521 echo 555
522 history 5
$ history -d 520
$ history 5
519 echo 333
520 echo 555
521 history 5
522 history -d 520
523 history 5
|
-c
移除所有历史命令。
-w
将历史执行命令记录写入到 .bash_history 文件。
环境变量
与 history 相关的环境变量包括:
HISTSIZE:历史执行命令列表的数量HISTFILESIZE:保存到 .bash_history 的历史执行命令数HISTTIMEFORMAT:显示命令时的时间格式字符串HISTCONTROL:记录控制变量
1
2
3
4
| $ echo $HISTSIZE
500
$ echo $HISTFILESIZE
500
|
示例
限制显示的命令数
1
2
3
4
5
6
| $ history 5
505 cd -
506 ls
507 expr 1 + 2
508 echo 'hello world'
509 history 5
|
通过事件号执行命令
1
2
3
| $ !508
echo 'hello world'
hello world
|
通过事件号预览命令 :p
查看并执行最近一条执行过的命令
查看并执行最近第 n 条执行过的命令
1
2
3
4
5
6
7
8
9
| $ history 5
523 history 5
524 echo HISTSIZE
525 echo $HISTSIZE
526 echo $HISTFILESIZE
527 history 5
$ !-3
echo $HISTSIZE
500
|
执行指定开头的历史命令
1
2
3
| $ !exp
expr 1 + 2
3
|
运行一条命令,但不对其进行记录
1
| $ echo "hello world"; history -d $(history 1)
|
在命令前输出执行的时间
1
2
3
| $ HISTTIMEFORMAT="%c "
$ history 1
537 Sat Mar 25 22:12:14 2023 history 1
|
对于重复连续执行的命令只记录一次
1
2
3
4
5
6
7
8
9
10
11
12
13
| $ HISTCONTROL="ignoredups"
$ pwd
/Users/a2htray/workspace/a2htray.github.io
$ pwd
/Users/a2htray/workspace/a2htray.github.io
$ pwd
/Users/a2htray/workspace/a2htray.github.io
$ history 5
537 Sat Mar 25 22:12:14 2023 history 1
538 Sat Mar 25 22:14:16 2023 echo $HISTCONTROL
539 Sat Mar 25 22:16:42 2023 HISTCONTROL="ignoredups"
540 Sat Mar 25 22:16:49 2023 pwd
541 Sat Mar 25 22:16:54 2023 history 5
|
参考
- history command in Linux with Examples
- How to Use the Linux history Command
- Bash History Command Examples In Linux