引言:
今天被同事问到一个history的冷门问题,我才意识到,这个我们天天打交道的命令,大部分人只用了其不到十分之一的功能。就像我刚入行的时候,只会傻傻的上下翻页,为此浪费了不少时间。
今天我刚好借着这个机会,把history的命令一次性地讲解下。
作为一名天天和linux打交道的运维人员,我们每天都要在linux服务器中执行很多命令。
有些命令特别长,如kubectl get pod -o wide |grep xxx 或者find . - type f -name "*.log" |xargs ls -l 等。如果我们能够结合history就能够减少很多时间。
history 命令是一个非常实用的工具,它用于查看和管理执行过的命令历史记录。它就像是你的命令行“时光机”。
一、history 命令的基础用法
1. 查看历史命令记录列表
history 的核心功能是查看已执行的命令。直接输入 history,系统会列出所有命令,每条命令前都有一个编号
history
如果你不想翻一大堆记录,只想查看最近执行的几条命令,可以使用 history N,其中 N 是你想要查看的命令数量。
history 10
二、执行历史命令的快捷方式
1. 执行指定编号的命令
history 命令的强大之处在于,你可以直接执行历史记录中的命令,而无需重新输入。使用 !编号 的方式,系统会自动执行对应编号的命令。
!997
这样就可以直接执行第997条命令(ip a),再也不用手动复制粘贴了。
2. 执行上一条命令
如果你想要执行上一条命令,只需输入 !!,这等同于按上下箭头键后回车。
!!
也就是执行ip a命令
3. 执行以特定字符串开头的命令
你还可以使用 !字符串 的方式,执行最近一次以该字符串开头的命令。
!ls
这将执行最近一次以ls开头的命令,例如 ls -l。
三、清除历史命令记录
1. 清除当前会话的历史记录(临时)
如果你想要清除当前终端会话中的所有历史命令记录,可以使用 history -c,此命令不会删除记录的文件。
history -c2. 清除历史记录文件中的所有条目
如果你想要彻底清除历史记录,包括文件中的所有条目,同样使用 history -c,这将清空 ~/.bash_history 文件。
history -c && history -w
四、保存与读取历史命令
1. 将当前会话的历史命令追加到历史文件中
使用 history -a,可以将当前会话中的命令追加到 ~/.bash_history 文件中,方便后续查看和执行。
history -a
2. 将历史文件中的内容读入当前会话
如果你想要将历史文件中的内容加载到当前会话中,可以使用 history -r。
history -r
3. 强制写入当前会话的历史记录到文件
使用 history -w,可以强制将当前会话的历史记录写入 ~/.bash_history 文件中。
history -w五、删除历史命令
1. 删除指定编号的命令
如果你想要删除当前会话记录中的某条命令,可以使用 history -d 编号。
history -d 5这将删除编号为 5 的命令。

2. 删除多个命令
你可以多次使用 history -d 删除多个命令。
history -d 3history -d 4

六、显示命令执行时间
1. 设置时间戳格式(重要)
你可以通过设置环境变量 HISTTIMEFORMAT 来显示命令的执行时间。例如:
export HISTTIMEFORMAT='%Y-%m-%d-%H-%M-%S' #显示年月日时分秒export HISTTIMEFORMAT='%F %T '
这个命令执行后history就带来命令的执行时间,对后续进行审计及查找历史命令非常有用。
2. 查看带时间戳的历史命令
设置好时间戳格式后,再次运行 history,你将看到每条命令前都显示了执行时间。
history七、其他实用技巧
1. 使用 Ctrl + R 进行反向搜索(最强功能)
在命令行中按下 Ctrl + R,然后输入关键字,可以快速搜索历史命令。这个命令是一般高手经常使用的命令,熟练后非常好用,推荐。

2. 配合 grep 过滤历史命令(最常用)
你可以使用 grep 命令来过滤历史命令,例如:
history | grep "ls"
这将显示所有包含 ls 的命令。
3. 设置历史记录大小
通过设置环境变量 HISTSIZE 和 HISTFILESIZE,你可以控制历史记录的数量。
export HISTSIZE=1000export HISTFILESIZE=1000000

4. 隐藏某些命令
如果你想要隐藏某些命令,可以使用 set +o history 和 set -o history 来临时禁用或启用历史记录。
set +o history # 禁用历史记录set -o history # 启用历史记录


八、配置文件设置
1. 永久生效配置
你可以将 HISTTIMEFORMAT 等设置写入 /etc/profile 或 ~/.bashrc 文件中,使配置永久生效。
# 编辑 /etc/profile 文件
vi /etc/profile #系统用户root下执行# 添加以下内容
export HISTTIMEFORMAT='%F %T 'export HISTSIZE=1000export HISTFILESIZE=1000000
# 使配置生效
source /etc/profile
2. 记录用户操作历史
你还可以通过修改 /etc/profile 文件来记录用户的登录 IP 和操作日志,这对于系统管理和故障排查非常有用。

总结
history 命令是 Linux 系统中一个非常实用的工具。熟练掌握history命令,能让你在服务器少敲一般命令,工作效率直接起飞。
别再只会用上下方向键查找命令了。把这篇文章收藏起来,用户使用的时候可以随时翻看。
欢迎留言区交流分享linux的趣味知识。
本文章仅用于学习交流,不得用于其他目的