Atuin:30k Star 的终端历史管理工具,把命令存进了 SQLite 数据库
换台电脑,或者重装系统,第一件事是什么?很多人会先找回自己的 .bash_history——那个藏在 ~/.bash_history 里的纯文本文件。但如果你用过它,就知道它的局限:只有命令本身,没有退出码、没有执行时长、没有工作目录。想找三天前在某目录下执行过的某个命令?Ctrl-R 翻半天,根本找不到。
Atuin 就是来解决这个问题的。
它是什么
Atuin 是一个用 Rust 写成的 shell 历史管理工具。它把传统的 .bash_history 纯文本历史替换成了 SQLite 数据库。每条命令不再只是一行文字,而是一条包含丰富上下文的数据记录:
| 字段 | 说明 |
|---|---|
| 命令 | 你输入的那一行 |
| 退出码 | 命令成功还是失败 |
| 执行时长 | 花了多少秒 |
| 工作目录 | 当时在哪个目录 |
| 主机名 | 在哪台机器上执行的 |
| 会话 ID | 属于哪个终端会话 |
| 时间戳 | 什么时候执行的 |
有了这些字段,搜索就不再是简单的字符串匹配。你可以按目录、按主机、按退出码、按时间范围过滤。比如”找出所有在 ~/projects 目录下失败的命令”,或者”找出上周执行超过 10 秒的命令”。
核心功能

1. 全屏 TUI 搜索
Atuin 接管了 Ctrl-R 和方向键上翻的历史搜索。按下 Ctrl-R 后,你会看到一个全屏的界面,支持模糊搜索和正则匹配。搜索结果按相关性排序,你可以用方向键选择,回车执行。
如果你用 fzf 做模糊搜索,Atuin 的搜索体验是类似的——但它搜索的是结构化的数据库,不是纯文本文件。
2. 端到端加密同步
这是 Atuin 最实用的功能之一。你可以把历史同步到云端,换台机器后自动拉取,历史不会丢。同步的数据在客户端加密,服务端看不到原始内容。
官方提供托管服务,你也可以自托管。自托管只需要一行 Docker 命令:
docker run -d -v atuin-data:/config -p 8888:8888 ghcr.io/atuinsh/atuin:latest server start
如果你不想折腾同步,只用本地功能也完全没问题。Atuin 的核心价值在于 SQLite 存储和搜索,同步是锦上添花。
3. 多 Shell 支持
Atuin 支持 zsh、bash、fish、nushell、xonsh、PowerShell。无论你在用什么 shell,历史都统一存到一个 SQLite 数据库里。
4. 统计与洞察
Atuin 内置统计功能,可以告诉你最常用的命令是什么、哪些命令执行次数最多、平均时长分布如何。这些数据对理解自己的使用习惯很有帮助。
5. 后台 Daemon 加速
从 v18.3 开始,Atuin 引入了后台 Daemon 进程,使用修改版的 nucleo 算法在内存中建立索引。Ctrl-R 的响应时间从百毫秒级别降到毫秒级,搜索几乎感觉不到延迟。
安装与配置
安装只需要三步:
# 1. 安装
curl --proto '=https' --tlsv1.2 -LsSf https://setup.atuin.sh | sh
# 2. 导入现有历史
atuin import auto
# 3. 添加到 shell 配置(以 zsh 为例)
echo 'eval "$(atuin init zsh)"' >> ~/.zshrc
bash 用户把 zsh 换成 bash 即可。安装后重启 shell,Ctrl-R 就会被 Atuin 接管。
导入现有历史这一步很重要——你之前的 .bash_history 会被导入到 Atuin 的 SQLite 数据库里,这样你从安装那一刻起就有完整的历史记录。
如果你想用同步功能,注册一个 Atuin 账号(或者自建服务器),然后运行 atuin register 获取 API key,再运行 atuin login 完成认证。
和竞品的区别
| 工具 | 存储方式 | 跨机同步 | 搜索方式 |
|---|---|---|---|
| Atuin | SQLite 结构化 | 端到端加密 | Daemon 内存索引 |
| fzf | 不存储 | 无 | 通用模糊查找 |
| McFly | 本地 | 无 | 神经网络排序 |
| Hstr | 本地 | 无 | 轻量搜索 |
fzf 是一个通用的模糊搜索工具,它可以用来搜索历史,但它不存储历史,每次搜索都是实时从 .bash_history 读取。McFly 用神经网络给搜索结果排序,但它没有同步功能。Hstr 比较轻量,但功能也相对简单。
Atuin 的优势在于:结构化存储 + 同步 + 搜索,三者合一。如果你只需要其中一个功能,其他工具可能更合适。如果你想要一个完整的解决方案,Atuin 是目前最好的选择。

踩坑与注意事项
Shell 配置需要重启生效。 安装后把 atuin init 加到 shell 配置文件里,需要重启 shell 或者执行 source ~/.zshrc 才能生效。第一次生效前,Ctrl-R 还是原来的行为。
同步不是必须的。 很多人看到”端到端加密同步”就觉得必须用。其实 Atuin 的核心功能——SQLite 存储和搜索——完全可以在本地使用。同步只是让你换台机器后不用重新积累历史。
Daemon 进程需要额外资源。 v18.3+ 的后台 Daemon 会占用少量内存(通常几十 MB),换来的是毫秒级搜索响应。如果你的机器资源紧张,或者对搜索速度要求不高,可以关闭 Daemon 用普通模式。
多 shell 共享数据库要注意冲突。 如果你同时在 zsh 和 bash 里用 Atuin,两个 shell 会写入同一个数据库。正常情况下没问题,但如果两个 shell 同时执行命令,可能会出现写入冲突。建议主要用一个 shell,其他 shell 只读不写。
总结
Atuin 适合什么人?
- 每天在终端里待很长时间的人
- 经常换电脑或重装系统,不想丢失历史的人
- 对
.bash_history的局限感到不满的人 - 需要跨机器搜索历史的人
不适合什么人?
- 终端使用频率很低的人
- 对隐私极其敏感,连加密同步都不想用的人(虽然本地使用完全没问题)
- 已经用其他工具(如 fzf + 自定义脚本)满足需求的人
如果你属于第一类,Atuin 值得试试。安装只需三分钟,带来的提升是长期的。