Linux 终端历史能够方便我们查看历史执行命令,也可以帮助重新执行历史中执行的命令。下面介绍常用的操作历史的方法。
历史命令时间戳
一般情况下,我们直接在终端中输入命令 history
就可以查看历史命令,以序号展示:
1 2 3 4
| 1 history 2 ls 3 who 4 history
|
可以通过如下设置,将历史命令的时间打印出来:
1 2
| export HISTTIMEFORMAT='%F %T ' history
|
1 2 3 4 5
| 1 2022-12-16 05:22:25 history 2 2022-12-16 05:22:26 ls 3 2022-12-16 05:22:27 w 4 2022-12-16 05:22:43 export HISTTIMEFORMAT='%F %T ' 5 2022-12-16 05:22:46 history
|
清空历史记录
清空历史记录方法如下:
清空某条历史记录
清空某一条历史记录,需要知道该历史记录的序号,如序号1,然后使用下面命令清除:
搜索历史记录
一般使用方向键:上,下,即可向上或向下搜索上一条或下一条历史记录。但有时候,我们需要根据历史记录中包含有某些字符的历史记录,可以使用快捷键:ctrl + r
,效果如下:
1
| (reverse-i-search)`HIS': export HISTTIMEFORMAT='%F %T '
|
然后,可以回车执行。或向左方向键再次编辑,向上找到该条历史记录上一条,向下找到该条历史记录下一条。
或者通过如下方法也可以找到包含某些字符的历史命令:
执行上一条命令
执行上一条命令,可以直接通过向上快捷键找到上一条命令,然后回车即可执行。
或者输入如下命令,回车也可以执行上一条命令
获取上一条命令的最后一个参数
1
| ls /home/jinzhongxu/playground
|
就是执行
1
| ls -l /home/jinzhongxu/playground
|
获取上一条命令的第一个参数
就是执行
执行以某些字符开头的命令
获取某个历史命令的某个参数
获取第一个参数
就是执行
获取第二个参数
执行某个历史命令
如想执行需要为 3 的历史命令
不记录某些命令
默认清空下,shell 中执行的所有命令都会记录在 history 中,如果不想把执行的命令记录进去,可以如下设置
1
| export HISTCONTROL=ignorespace
|
然后,在执行命令时,在命令最前面增加一个空格:
注意,与不增加空格的命令对比:
不记录所有历史命令
排查某些命令,不记录到历史命令中
如果一些常规命名不想记录到历史中,可以如下设置:
1
| export HISTIGNORE="pwd:ls:ls -lSr:"
|
剔除历史命令中的重复项
有时候,一个命令在不同时刻执行,会在历史命令中记录多次,如 pwd
,ls
等。我们可以使用如下设置,剔除这些重复项:
1
| export HISTCONTROL=erasedups
|
显示时剔除重复项
有时候我们不想直接在历史命令中剔除这些重复项,我们只希望显示时重复项只出现一次,方法如下:
1
| export HISTCONTROL=ignoredups
|
参考文献
- 掌握 Linux 命令行历史的 15 个示例