Ubuntu 终端历史记录(history)全攻略

掌握Ubuntu终端中history命令的使用方法,包括查看、搜索、执行历史命令,以及自定义、清理历史记录等操作,这份指南会从基础到进阶覆盖所有核心用法。


一、基础:查看终端历史记录

1. 查看所有历史命令

直接在终端执行history,会列出你之前执行过的所有命令(默认按执行顺序排列,每行显示「命令编号 + 命令内容」):

history

示例输出:

  102  ls -l
  103  cd ~/Documents
  104  sudo apt update
  105  history

2. 查看最近N条历史命令

只想看最近的几条命令(比如最近10条),在history后加数字即可:

history 10  # 查看最近10条历史命令

3. 查看带时间戳的历史记录

默认history不显示执行时间,配置环境变量后可显示命令执行的时间戳,临时生效(仅当前终端):

export HISTTIMEFORMAT="%F %T "  # 格式:年-月-日 时:分:秒
history 5  # 查看最近5条带时间戳的命令

示例输出:

  101  2026-01-13 14:20:32 ls -l
  102  2026-01-13 14:21:05 cd ~/Documents
  103  2026-01-13 14:22:10 sudo apt update

若想永久生效时间戳,将配置写入~/.bashrc:

echo 'export HISTTIMEFORMAT="%F %T "' >> ~/.bashrc
source ~/.bashrc  # 立即生效配置

二、高效使用:执行历史命令

1. 执行指定编号的历史命令

通过history查到命令编号后,用!编号快速执行(无需重新输入):

!104  # 执行编号104的命令(示例中是sudo apt update)

2. 执行上一条命令

最常用的快捷方式,无需查编号:

!!  # 执行上一条命令

场景示例:上一条命令忘记加sudo,直接执行sudo !!即可补全权限:

apt upgrade  # 提示权限不足
sudo !!      # 等价于sudo apt upgrade

3. 执行最近以指定关键词开头的命令

用!关键词匹配最近一次以该关键词开头的命令:

!ls  # 执行最近一次以ls开头的命令(如ls -l)
!sudo  # 执行最近一次以sudo开头的命令

4. 反向搜索历史命令(最实用)

按下Ctrl + R,终端会进入「反向搜索模式」(显示(reverse-i-search)),输入关键词即可实时匹配历史命令:

  • 输入关键词(如apt),会显示匹配的最近命令;
  • 继续按Ctrl + R,可切换到更早的匹配命令;
  • 按Enter执行匹配的命令,按Esc退出搜索(不执行)。

三、管理历史记录:修改/清除/保存

1. 删除单条历史命令

用history -d 编号删除指定编号的历史命令(比如删除编号104的命令):

history -d 104  # 删除编号104的命令

2. 清除所有历史记录

  • 临时清除(仅当前终端,退出后恢复):
    history -c  # 清空当前终端的历史记录显示
    
  • 永久清除(清空历史文件,退出终端后生效):
    history -c  # 清空当前终端记录
    history -w  # 将清空后的状态写入历史文件(覆盖原有记录)
    

3. 手动保存历史记录

终端的历史记录默认在退出终端时写入~/.bash_history文件,若想手动保存当前记录(比如避免意外关闭终端丢失):

history -w  # 将当前终端的历史记录写入~/.bash_history

4. 读取历史文件到当前终端

将~/.bash_history中的记录加载到当前终端(比如合并其他终端的历史):

history -r  # 读取历史文件到当前终端

四、自定义历史记录规则(进阶)

Ubuntu终端的历史记录行为可通过修改~/.bashrc配置文件自定义,核心参数如下:

1. 调整历史记录最大条数

默认HISTSIZE(当前终端保留的历史条数)和HISTFILESIZE(历史文件最大条数)均为1000,可增大数值:

# 编辑~/.bashrc
nano ~/.bashrc

# 添加以下内容(示例:保留10000条记录)
export HISTSIZE=10000    # 当前终端内存中保留的条数
export HISTFILESIZE=10000  # ~/.bash_history文件中保留的条数

# 保存后生效
source ~/.bashrc

2. 忽略重复/空命令

避免历史记录中出现重复命令或空行:

# 写入~/.bashrc
export HISTCONTROL=ignoreboth  # ignoreboth = ignoredups + ignorespace
# ignoredups:忽略重复命令;ignorespace:忽略以空格开头的命令
source ~/.bashrc

效果:

  • 重复执行ls -l,历史中仅保留一条;
  • 输入sudo apt update(开头加空格),该命令不会被记录(适合执行敏感命令)。

3. 忽略指定命令

不想记录某些高频但无意义的命令(如ls、cd),配置HISTIGNORE:

# 写入~/.bashrc
export HISTIGNORE="ls:cd:pwd:history"  # 用冒号分隔要忽略的命令
source ~/.bashrc

五、关键补充:历史文件位置与权限

1. 历史文件默认路径

Ubuntu(bash shell)的历史记录默认保存在用户目录下的~/.bash_history文件中:

cat ~/.bash_history  # 查看历史文件内容

注意:

  • 每个用户的历史文件独立(root用户的历史文件是/root/.bash_history);
  • 终端未退出时,历史记录先存在内存中,退出后才写入文件。

2. 不同Shell的差异

  • 若使用zsh(而非默认bash),历史文件是~/.zsh_history,配置文件是~/.zshrc;
  • fish shell的历史管理逻辑不同,需用history命令的专属参数。

总结

  1. 核心查看:history(全量)/history N(最近N条),Ctrl+R反向搜索最实用;
  2. 快速执行:!!(上一条)、!编号(指定条)、!关键词(匹配开头);
  3. 管理记录:history -d(删单条)、history -c(清空)、history -w(保存);
  4. 自定义:修改~/.bashrc中的HISTSIZE/HISTCONTROL等参数,满足个性化需求。

这些操作能大幅提升你在Ubuntu终端的操作效率,尤其是Ctrl+R反向搜索和!!补全命令,建议优先掌握。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容