在
Linux 终端中,
history
命令是高效管理操作记录的核心工具,它记录用户执行过的所有命令,支持快速回顾、复用历史操作以减少重复输入。无论是查看最近命令、通过序号或关键词快速执行历史操作,还是通过选项清空、删除特定记录,
history
都能轻松实现。此外,通过配置
HISTSIZE
(内存记录数)、
HISTTIMEFORMAT
(时间戳显示)、
HISTCONTROL
(过滤规则)等环境变量,可定制历史记录的存储、显示与过滤方式。本文涵盖基础用法、核心选项、复用技巧及安全注意事项,帮助用户通过
history
优化命令行工作流,提升操作效率与安全性。
history
是 bash、zsh 等 shell 的内置命令,用于显示终端执行过的命令记录。默认情况下,历史记录保存在用户家目录的.bash_history
文件中,终端退出时会自动将当前会话命令追加到文件,下次登录时加载。
- 直接输入
history
:显示当前会话所有历史命令(带序号)。
- 限制显示数量:
history 10
显示最近 10 条命令。
选项 |
功能说明 |
-c |
清空当前会话内存中的历史记录(需结合history -w 写入文件才永久生效)。 |
-d 序号 |
删除指定序号的历史命令(序号从 1 开始),如history -d 5 删除第 5 条命令。 |
-a |
将当前会话新增命令追加到.bash_history 文件,即时保存。 |
-w |
覆盖写入当前会话历史到文件,常用于固化修改(如清空后保存空记录)。 |
-r |
从历史文件读取内容并追加到当前会话,用于重新加载历史。 |
- 通过序号执行:
!123
直接运行第 123 条命令。
- 快捷复用:
!!
重新执行上一条命令;
!-n
执行倒数第 n 条命令(如!-2
执行倒数第二条);
!string
执行最近一条以string
开头的命令(如!ls
执行最近的ls
命令);
!?string
执行最近一条包含string
的命令(如!?ssh
匹配含ssh
的命令)。
- 管道过滤:
history | grep "关键词"
搜索含指定关键词的命令(如history | grep "apt"
找包管理命令)。
- 快捷键搜索:按下
Ctrl+r
后输入关键词,反向循环匹配历史命令,按Enter
执行或Ctrl+g
退出。
通过环境变量可自定义history
的存储规则,需添加到.bashrc
等配置文件(执行source ~/.bashrc
生效):
变量名 |
功能说明 |
HISTFILE |
指定历史文件路径,默认~/.bash_history ,如export HISTFILE=~/.my_history 。 |
HISTSIZE |
内存中保存的最大命令数(默认 1000),如export HISTSIZE=5000 扩容。 |
HISTFILESIZE |
历史文件保存的最大命令数,如export HISTFILESIZE=10000 。 |
HISTTIMEFORMAT |
显示命令执行时间,格式如export HISTTIMEFORMAT="%F %T " (年月日 时分秒)。 |
HISTCONTROL |
过滤历史记录,如export HISTCONTROL=ignoredups:ignorespace 忽略重复命令和空格开头的命令(保护敏感操作)。 |
- 安全性:历史记录可能包含密码、密钥等敏感信息,需限制
.bash_history
文件权限(如chmod 600 ~/.bash_history
),或用HISTCONTROL=ignorespace
让空格开头的命令不被记录。
- 持久性:
history -d
等操作仅影响当前会话,需执行history -w
才能将修改写入文件永久生效。
- 兼容性:不同 shell(如 zsh)的
history
细节可能有差异,建议参考对应 shell 的文档。
通过合理使用history
命令及其配置,可大幅简化终端操作流程,快速复用历史命令,同时通过环境变量定制个性化历史管理规则,提升 Linux 命令行效率与安全性。