在
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 命令行效率与安全性。