在 Linux 或 macOS 的终端里,每天敲命令是常事。比如你想重新运行昨天查日志的那条 grep 命令,但记不清具体参数了。这时候,Bash 命令历史就能帮上大忙。
什么是 Bash 命令历史
Bash 会自动记录你输入过的命令,保存在一个叫 ~/.bash_history 的文件里。每次打开终端,它都会加载之前的记录,让你可以快速找回用过的命令。
查看命令历史
直接输入 history 就能看到最近用过的命令列表:
history
输出类似这样:
1 ls -la
2 cd /var/log
3 grep "error" system.log
4 tail -f app.log
每一行前面的数字是命令编号,后面是具体内容。
重复执行某条命令
如果你想要再次执行第 3 条命令,可以直接输入:
!3
终端就会自动运行 grep "error" system.log。
也可以用前缀搜索。比如输入 !tail,就会执行最近一条以 tail 开头的命令。
上下箭头更常用
实际使用中,大多数人不会去记编号。更方便的是按键盘上的“上箭头”键,一条条翻看之前的命令,找到就回车执行。下箭头则是往回走。
这个操作就像微信聊天记录往上翻,谁还没发过的话,再发一遍。
搜索历史命令
如果你记得关键词但不确定完整命令,可以用 Ctrl + r 进行反向搜索。
按下 Ctrl + r 后,输入 grep,终端会实时显示匹配的历史命令。继续按 Ctrl + r 可以查找更早的匹配项。
修改历史记录行为
默认情况下,Bash 只保存一定数量的命令。你可以通过设置环境变量来调整。
比如,在 ~/.bashrc 文件中添加:
export HISTSIZE=5000
export HISTFILESIZE=5000
这会让系统最多保存 5000 条命令历史,避免被过早清除。
还可以让多个终端窗口共享历史记录,避免切换窗口时找不到刚用过的命令:
shopt -s histappend
export PROMPT_COMMAND="history -a; $PROMPT_COMMAND"
小心别留下敏感信息
命令历史会明文保存,如果里面包含了密码或密钥,比如:
curl -u admin:123456 http://localhost/api/data
那就可能被别人看到。建议这类命令用脚本封装,或者执行前手动从历史中删除:
history -d 100
这条命令会删除第 100 条历史记录。
也可以临时清空整个历史:
history -c
小技巧:给命令加注释
有时候一条复杂命令过几天自己都看不懂。可以在执行前先加个注释:
# backup config before update; cp ~/app/config.yml ~/backup/
这样 history 里也会显示这行注释,方便回忆用途。