Linux命令:history

📅 2026/8/11 6:11:25
Linux命令:history
history 命令基本介绍history是 Shell 内建命令用于查看、管理和复用当前用户在交互式 Shell 中执行过的命令历史记录。它常用于快速查找并重新执行以前的命令避免重复输入长命令。资料合集https://pan.quark.cn/s/6fe3007c3e95、https://pan.quark.cn/s/561de99256a5、https://pan.quark.cn/s/985f55b13d94、https://pan.quark.cn/s/d0fb20abd19a语法history[选项][数量]history-chistory-d偏移量history-anrw[文件名]history-p参数[参数...]history-s参数[参数...]不指定参数时显示当前会话的命令历史。常用选项-c清空当前会话的历史记录列表。-d 偏移量删除指定偏移位置的历史记录条目。-a将当前会话新增的历史记录追加到历史文件中。-n从历史文件中读取尚未加载的新记录。-r从历史文件读取并覆盖当前历史列表。-w将当前历史列表写入历史文件覆盖。-p 参数对参数执行历史展开但不将其加入历史列表测试用。-s 参数将参数作为一条记录加入历史列表末尾不实际执行。历史展开事件设计符在交互式 Shell 中可使用以下符号快速复用历史命令符号含义!!上一条命令!n第n条历史记录!-n倒数第n条历史记录!字符串最近一条以该字符串开头的命令!?字符串?最近一条包含该字符串的命令^old^new将上一条命令中的old替换为new后执行!$上一条命令的最后一个参数!!:p只展开打印上一条命令不执行使用示例1. 显示所有历史记录history输出示例1 ls -la 2 cd /var/log 3 grep error syslog 4 vim nginx.conf2. 显示最近 10 条记录history103. 重新执行上一条命令!!等价于按上箭头后回车。常与sudo配合aptinstallvimsudo!!4. 重新执行指定编号的命令!3重新执行历史记录中第 3 条命令。5. 重新执行以某字符串开头的命令!grep重新执行最近一条以grep开头的命令。6. 复用上一条命令的最后一个参数ls-l/etc/nginx/nginx.confvim!$!$会被展开为/etc/nginx/nginx.conf。7. 替换并执行^nginx^apache2^将上一条命令中的nginx替换为apache2后执行。8. 搜索历史记录history|grepssh查找包含ssh的历史命令。9. 删除指定历史记录history-d5删除第 5 条历史记录。10. 清空当前会话历史history-c清空当前 Shell 内存中的历史列表但不会自动修改磁盘上的历史文件。11. 将历史写入文件history-w将当前内存中的历史列表覆盖写入历史文件默认~/.bash_history。12. 从文件重新加载历史history-r从历史文件读取记录并覆盖当前历史列表。常用快捷键快捷键功能Ctrl R反向增量搜索历史命令Ctrl P上一条命令等价于上箭头Ctrl N下一条命令等价于下箭头Alt .插入上一条命令的最后一个参数Ctrl O执行当前命令并显示下一条相关环境变量变量说明HISTFILE历史记录保存的文件路径默认~/.bash_historyHISTSIZE内存中保留的历史记录条数HISTFILESIZE历史文件中保存的最大记录条数HISTCONTROL控制历史记录的存储方式如ignorespace以空格开头的命令不记录、ignoredups连续重复不记录、ignoreboth两者均启用HISTIGNORE使用冒号分隔的模式列表匹配的命令不记录HISTTIMEFORMAT设置历史记录的时间戳格式如%F %T 配置示例在~/.bashrc中添加# 保留更多历史记录exportHISTSIZE10000exportHISTFILESIZE20000# 忽略重复和以空格开头的命令exportHISTCONTROLignoreboth# 记录命令执行时间exportHISTTIMEFORMAT%F %T # 忽略特定命令exportHISTIGNOREls:cd:pwd:exit:clear:history# 追加而非覆盖避免多终端相互覆盖shopt-shistappend# 实时记录每条命令执行后立即写入历史文件exportPROMPT_COMMANDhistory -a注意事项history是 Shell 内建命令不是独立的可执行文件。默认情况下Bash 在会话结束时才将历史写入文件。多终端同时使用时可能出现相互覆盖。启用shopt -s histappend并配合PROMPT_COMMAND可缓解此问题。history -c只清除内存中的历史列表不会自动删除磁盘上的~/.bash_history。若需彻底清除还需手动删除或清空该文件。历史记录中可能包含密码、密钥等敏感信息。输入敏感内容前可在命令前加空格需配合HISTCONTROLignorespace使该命令不被记录。HISTTIMEFORMAT设置后只对新执行的命令生效已有记录的时间戳默认为首次设置该变量时的当前时间。Zsh 的历史机制与 Bash 不同使用~/.zsh_history且历史展开语法有细微差别。可通过help history查看 Bash 的内建帮助。相关命令fc列出、编辑或重新执行历史命令。alias为常用命令创建别名减少重复输入。readlineBash 使用的行编辑库提供历史搜索和快捷键。~/.bash_historyBash 默认的历史记录文件。~/.bashrcBash 配置文件常用于设置历史相关环境变量。总结history是查看和复用过往命令的核心工具。通过!!、!n、!字符串等历史展开语法可快速重新执行命令配合CtrlR能高效搜索历史。通过配置HISTSIZE、HISTCONTROL、HISTTIMEFORMAT等环境变量可以定制历史记录的保留策略、存储方式和时间戳格式。使用时应注意避免敏感信息被记录并合理处理多终端下的历史同步问题。