Linux 终端历史能够方便我们查看历史执行命令,也可以帮助重新执行历史中执行的命令。下面介绍常用的操作历史的方法。
历史命令时间戳
一般情况下,我们直接在终端中输入命令 history 就可以查看历史命令,以序号展示:
| 12
 3
 4
 
 | 1  history2  ls
 3  who
 4  history
 
 | 
可以通过如下设置,将历史命令的时间打印出来:
| 12
 
 | export HISTTIMEFORMAT='%F %T 'history
 
 | 
| 12
 3
 4
 5
 
 | 1  2022-12-16 05:22:25 history2  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 个示例