Stinkpot:基于 SQLite 的 Shell 历史记录管理
来源:tangled.org — 2026-07-27
📋 概述
Stinkpot 是一个创新的 Shell 历史记录方案:将原本以纯文本存储的 shell history 迁移到 SQLite 数据库中,支持全文搜索、按目录筛选、时间范围查询和统计面板。它解决了传统 `.bash_history` 文件在历史积累多年后的搜索和管理痛点。
🔑 核心要点
- 核心改进:从扁平文本到结构化数据库——每条命令存储为一行 SQLite 记录,包含时间戳、工作目录、退出码、执行时长等元数据。
- 支持SQL 查询历史:`stinkpot "SELECT cmd FROM history WHERE exit_code != 0 ORDER BY ts DESC LIMIT 20"` 即可找出最近 20 条失败命令。
- 通过 LD_PRELOAD 拦截所有 shell 的 write 调用,对 bash/zsh/fish 透明,无需修改 shell 配置。
- 实际效果:20 万条历史记录的搜索从7 秒降至 30 毫秒,且支持模糊匹配和正则搜索。
💡 金句
你的命令行历史是一本未整理的个人日志——SQLite 是其中每一页的页码和目录。
👍 0
👎 0
← 返回 HN 首页