Linux查看历史命令,history命令使用技巧

前言

在服务器上敲了很多命令,突然想找之前执行过的某条命令,怎么办?history 命令就能帮你查看历史命令。本文讲一下 history 的常用用法和技巧。

基本用法

查看历史命令

history

输出会列出你执行过的所有命令,每条前面有个编号,比如:

  100  yum install -y wget
  101  systemctl restart nginx
  102  df -h

执行第 N 条历史命令

用 !编号 直接执行:

!101

就会重新执行第 101 条命令。

执行上一条命令

几种方式都行:

!!

或者按向上方向键,再回车。

搜索历史命令

输入开头几个字母,然后按 Ctrl + R:

(reverse-i-search)`sys': systemctl restart nginx

会搜索你输入过的包含这个关键词的历史命令,找到之后回车执行。

再按一次 Ctrl + R 会继续往前找下一个匹配的。

常用技巧

只看最近 N 条

history 10

只看最近 10 条命令。

搜索历史命令里的关键词

history | grep 关键词

比如找所有包含 nginx 的命令:

history | grep nginx

执行最近一条以某个关键词开头的命令

!关键词

比如最近一条以 yum 开头的命令:

!yum

会直接执行最近一次输入的 yum 开头的命令。

替换上一条命令里的内容

比如上一条命令是 cp file1.txt file2.txt,想改成 mv file1.txt file2.txt:

^cp^mv

这样就把上一条命令里的 cp 替换成 mv 再执行。

清空历史命令

清空当前会话的历史

history -c

注意:这个只是清空当前内存里的历史,还没写入文件。

清空历史文件

history -w

把当前内存里的历史写入文件(覆盖掉旧的)。

彻底清空

history -c
history -w

两步一起执行,彻底清空所有历史命令。

删除某一条历史命令

history -d 编号

比如删除第 100 条:

history -d 100

历史命令保存在哪

历史命令默认保存在:

~/.bash_history

每个用户都有自己的 .bash_history 文件。

查看历史文件

cat ~/.bash_history

修改历史记录条数

默认记录 1000 条,可以改:

echo "HISTSIZE=10000" >> /etc/profile
echo "HISTFILESIZE=10000" >> /etc/profile
source /etc/profile

改成记录 10000 条。

常见坑

坑1:history 看不到刚执行的命令

刚执行完的命令,history 里没有。

原因: 历史命令是在退出会话的时候才写入文件的,当前会话的历史在内存里。

解决: 执行 history 就能看到当前会话的所有命令,包括刚执行的。

坑2:history -c 清不干净

执行了 history -c,但重新登录后又出来了。

原因: 只清了内存,没清文件。

解决: 还要执行 history -w 写入文件。

坑3:别人 history 能看到我输的密码

不小心在命令行里输了密码,比如 mysql -uroot -p123456,history 里就有了。

解决:

  1. 执行完之后赶紧删掉那条历史:history -d 编号
  2. 以后输密码不要直接写在命令里,用交互式输入:mysql -uroot -p,然后回车再输密码

坑4:多开几个终端,历史命令对不上

开了多个 SSH 窗口,在这个窗口执行的命令,另一个窗口 history 里看不到。

原因: 每个终端会话有自己的内存历史,退出时才写入文件。

解决: 这是正常现象,不用纠结。

总结

命令 作用
history 查看历史命令
history 10 只看最近 10 条
!101 执行第 101 条历史命令
!! 执行上一条命令
!yum 执行最近一条 yum 开头的命令
history \| grep nginx 搜索包含 nginx 的历史命令
history -c 清空当前会话历史
Ctrl + R 搜索历史命令

日常用得最多的就是 Ctrl + R 搜索 和 history | grep,效率很高。

遇到问题加QQ23979811 协助处理


emer 发布于  2026-10-6 07:51