linux 命令行历史 history
Linux 终端历史能够方便我们查看历史执行命令,也可以帮助重新执行历史中执行的命令。下面介绍常用的操作历史的方法。
历史命令时间戳
一般情况下,我们直接在终端中输入命令 history
就可以查看历史命令,以序号展示:
bash
1 | history |
bash
1 | 1 history |
可以通过如下设置,将历史命令的时间打印出来:
bash
1 | export HISTTIMEFORMAT='%F %T ' |
bash
1 | 1 2022-12-16 05:22:25 history |
清空历史记录
清空历史记录方法如下:
bash
1 | history -c |
清空某条历史记录
清空某一条历史记录,需要知道该历史记录的序号,如序号1,然后使用下面命令清除:
bash
1 | history -d 1 |
搜索历史记录
一般使用方向键:上,下,即可向上或向下搜索上一条或下一条历史记录。但有时候,我们需要根据历史记录中包含有某些字符的历史记录,可以使用快捷键:ctrl + r
,效果如下:
bash
1 | (reverse-i-search)`HIS': export HISTTIMEFORMAT='%F %T ' |
然后,可以回车执行。或向左方向键再次编辑,向上找到该条历史记录上一条,向下找到该条历史记录下一条。
或者通过如下方法也可以找到包含某些字符的历史命令:
bash
1 | history | grep HIS |
执行上一条命令
执行上一条命令,可以直接通过向上快捷键找到上一条命令,然后回车即可执行。
或者输入如下命令,回车也可以执行上一条命令
bash
1 | $$ |
获取上一条命令的最后一个参数
bash
1 | ls /home/jinzhongxu/playground |
bash
1 | ls -l !$ |
就是执行
bash
1 | ls -l /home/jinzhongxu/playground |
获取上一条命令的第一个参数
bash
1 | cp inputrc inputrc.bak |
bash
1 | vim !^ |
就是执行
bash
1 | vim inputrc |
执行以某些字符开头的命令
bash
1 | ps -ef |
bash
1 | !ps |
获取某个历史命令的某个参数
bash
1 | cp inputrc inputrc.bak |
获取第一个参数
bash
1 | ls -l !cp:1 |
就是执行
bash
1 | ls -l inputrc |
获取第二个参数
bash
1 | ls -l !cp:2 |
执行某个历史命令
如想执行需要为 3 的历史命令
bash
1 | !3 |
不记录某些命令
默认清空下,shell 中执行的所有命令都会记录在 history 中,如果不想把执行的命令记录进去,可以如下设置
bash
1 | export HISTCONTROL=ignorespace |
然后,在执行命令时,在命令最前面增加一个空格:
bash
1 | ls |
注意,与不增加空格的命令对比:
bash
1 | ls |
不记录所有历史命令
bash
1 | export HISTSIZE=0 |
排查某些命令,不记录到历史命令中
如果一些常规命名不想记录到历史中,可以如下设置:
bash
1 | export HISTIGNORE="pwd:ls:ls -lSr:" |
剔除历史命令中的重复项
有时候,一个命令在不同时刻执行,会在历史命令中记录多次,如 pwd
,ls
等。我们可以使用如下设置,剔除这些重复项:
bash
1 | export HISTCONTROL=erasedups |
显示时剔除重复项
有时候我们不想直接在历史命令中剔除这些重复项,我们只希望显示时重复项只出现一次,方法如下:
bash
1 | export HISTCONTROL=ignoredups |
参考文献
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 J. Xu!
评论