Atuin:给 Shell 历史记录装一台时光机,Ctrl+R 从此变成神器
用过终端的人,多多少少都被命令历史折磨过:按…
用过终端的人,多多少少都被命令历史折磨过:按上箭头翻半天找不到昨天那条长命令,Ctrl+R 只能搜最近几条,换个机器、换个容器,历史记录全清零。今天给大伙推荐一个工具——Atuin,它把 Shell 历史升级成了带加密同步、全文搜索、统计报表的「命令时光机」。
Atuin 是 Rust 写的,启动快、内存省,bash、zsh、fish、nushell 都支持。它把你敲过的每一条命令存进本地 SQLite,还能可选地同步到云端(官方服务或者你自己搭的服务器),端到端加密。最关键的是它替换 Ctrl+R 的交互界面:全屏 TUI、模糊搜索、实时预览、方向键上下翻、回车直接执行,比默认的反向搜索好用十倍。
一条命令装好
安装脚本一键到位:
curl --proto '=https' --tlsv1.2 -LsSf https://setup.atuin.sh | sh
想用包管理器的也可以:brew install atuin、cargo install atuin,各发行版仓库基本也都有。装完第一步是注册一个账号(同步用):
atuin register -u yourname -e you@example.com
然后在 ~/.bashrc 或 ~/.zshrc 末尾加一行,让它接管你的历史记录:
eval "$(atuin init bash)"
最后把现有的历史导进去,别浪费了这些年攒下的命令:
atuin import auto
日常就这么用
日常三个高频动作:Ctrl+R 打开全屏搜索,敲几个关键词就能命中几个月前的命令;atuin search 关键词 在命令行里直接搜;atuin stats 看看你最常用的命令是啥——大概率是 git status 和 ls,别问我是怎么知道的。
本地优先党可以自建同步服务
Atuin 默认连官方服务器同步历史。如果你跟我一样是「本地优先」党,不想把敲过的命令放别人服务器上,官方提供了 docker-compose,一个 Postgres 加一个 Atuin 服务容器,起起来就是自己的同步节点。配置文件里把 sync_address 指到内网地址,历史数据就全在自己手里,加密、离线、随时可用。
对我来说,Atuin 最大的价值不是「多炫」,而是它把命令历史从一个易失的缓存,变成了可检索、可同步、可统计的资产。敲过的每一条命令,都是踩坑踩出来的经验,现在终于能找回来了。
