掌握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; -
fishshell的历史管理逻辑不同,需用history命令的专属参数。
总结
-
核心查看:
history(全量)/history N(最近N条),Ctrl+R反向搜索最实用; -
快速执行:
!!(上一条)、!编号(指定条)、!关键词(匹配开头); -
管理记录:
history -d(删单条)、history -c(清空)、history -w(保存); -
自定义:修改
~/.bashrc中的HISTSIZE/HISTCONTROL等参数,满足个性化需求。
这些操作能大幅提升你在Ubuntu终端的操作效率,尤其是Ctrl+R反向搜索和!!补全命令,建议优先掌握。