引言

在日常的命令行工作中,我们经常会遇到忘记某个命令的具体用法或选项的情况。反复查阅 man 手册或在线搜索不仅耗时,有时还会打断工作思路。cheat (https://github.com/cheat/cheat) 就是为了解决这个问题而生的开源工具,它允许你在命令行中快速创建和查看交互式的备忘单(cheatsheets),帮助你即时回忆起所需命令。

主要特性

cheat 提供了一系列实用的特性,旨在提升命令行效率:

  • 快速查阅: 只需输入 cheat <command> 即可查看对应命令的常用示例和选项。例如,cheat tar 会显示 tar 命令的常见用法。
  • 社区驱动的备忘单: cheat 附带了一系列由社区贡献和维护的常用命令备忘单,涵盖了 Linux/macOS 常用工具、编程语言、数据库等多个方面。
  • 强大的自定义能力: 这是 cheat 的核心优势之一。用户可以轻松创建、编辑和管理自己的备忘单。只需在指定的目录(默认为 ~/.cheat/)下创建以命令命名的文件即可。这对于记录特定项目、团队内部约定或个人常用技巧非常有用。
  • 语法高亮: 为了提高可读性,cheat 会对备忘单中的命令和代码片段进行语法高亮。
  • 离线可用: 所有备忘单都存储在本地,即使在没有网络连接的情况下也能随时查阅,这对于网络不稳定的环境或需要离线工作的场景非常方便。
  • 可配置性: 用户可以通过配置文件(如 ~/.config/cheat/cheat.conf)或环境变量(如 CHEATPATH, EDITOR)来自定义 cheat 的行为,例如指定备忘单存储路径、默认编辑器等。
  • 易于集成: cheat 可以方便地与其他命令行工具(如 fzf)结合,实现更强大的搜索和交互体验。

安装与快速入门

安装 cheat 非常简单,可以通过多种方式进行:

  • 包管理器 (推荐):
    • macOS (Homebrew): brew install cheat
    • Debian/Ubuntu: apt install cheat
    • Arch Linux: pacman -S cheat
    • (其他发行版请参考官方文档)
  • Go 安装: 如果你配置好了 Go 环境 (>=1.13),可以使用:
    bash
    go install github.com/cheat/cheat/cmd/cheat@latest

    确保 $GOPATH/bin$HOME/go/bin 在你的 $PATH 环境变量中。
  • 预编译二进制文件: 从 GitHub Releases 页面下载适合你系统的预编译版本,并将其放置到 $PATH 包含的目录中。

快速入门:

安装完成后,即可开始使用:

# 查看 tar 命令的备忘单
cheat tar

# 查看 git 命令的备忘单
cheat git

# 列出所有可用的备忘单
cheat -l

# 编辑 git 备忘单 (如果不存在则创建)
cheat -e git

使用场景与案例

cheat 适用于多种场景,能够显著提升命令行效率:

  • 日常命令查询: 快速查找不常用的命令选项,如 find 的复杂参数、awk 的语法、sed 的替换模式等。
  • DevOps 工作流: 管理 Docker、Kubernetes、Ansible 等工具的常用命令。例如,创建一个 kubectl 备忘单,记录常用的资源查看、部署、调试命令。
    “`
    # ~/.cheat/kubectl
    # 查看所有 Pods
    kubectl get pods –all-namespaces

    查看特定 Pod 的日志

    kubectl logs -n

    进入 Pod 内部

    kubectl exec -it -n — /bin/bash
    “`
    * 编程辅助: 记录特定编程语言的语法片段、库函数用法或项目构建命令。
    * 团队知识共享: 通过 Git 等版本控制工具管理和共享团队内部的自定义备忘单,统一常用命令规范,提高协作效率。
    * 个人知识库: 不仅仅是命令,也可以用来存储常用的代码片段、配置模板、API 端点等任何需要快速查阅的文本信息。

进阶技巧与配置

掌握一些进阶技巧可以让 cheat 更加得心应手:

  • 自定义备忘单路径:
    • 默认路径为 ~/.cheat/
    • 可以通过设置环境变量 CHEATPATH 来指定一个或多个备忘单搜索路径,用冒号分隔。这有助于按项目或类别组织备忘单。
      bash
      export CHEATPATH="~/.cheat:~/.config/my_project/cheats"
    • 也可以在配置文件 ~/.config/cheat/cheat.conf 中设置 cheatpaths
  • fzf 集成实现模糊搜索:
    • 安装 fzf 后,可以结合使用,快速模糊搜索并选择备忘单:
      bash
      cheat $(cheat -l | fzf)
    • 或者在备忘单内部搜索:
      bash
      cheat <command> | fzf
  • 同步与共享备忘单:
    • Git: 最常用的方法是将你的 ~/.cheat/ 目录或自定义路径初始化为 Git 仓库,并推送到 GitHub/GitLab 等平台。这样可以在多台设备间同步,并方便地与他人共享。
    • Dotfiles 管理工具:cheat 的备忘单目录纳入你的 dotfiles 管理体系(如 chezmoi, GNU Stow 等),实现与其他配置文件的统一管理和同步。
  • 配置文件:
    • cheat 的配置文件通常位于 ~/.config/cheat/cheat.conf (YAML 格式)。
    • 可以配置默认编辑器、备忘单路径、颜色主题等。
      “`yaml
      # ~/.config/cheat/cheat.conf
      editor: vim # 设置默认编辑器
      style: monokai # 设置颜色主题
      cheatpaths:

      • path: ~/.cheat
        tags: [default, community]
        readonly: true # 社区备忘单设为只读
      • path: ~/my_cheats
        tags: [personal]
        readonly: false # 个人备忘单可写
        “`

与类似工具对比

cheat 并非唯一的命令行备忘单工具,了解其与同类工具的差异有助于选择最适合你的那一款:

特性 cheat tldr navi
核心目标 提供详细、可自定义的备忘单 提供简洁、入门级的命令示例 (Too Long; Didn’t Read) 交互式命令查找与执行,支持自定义片段
内容来源 社区 + 强大的用户自定义 社区维护,格式规范,力求简洁 用户自定义代码片段,可导入社区资源
交互方式 命令行参数,非交互式 命令行参数,非交互式 交互式模糊搜索 (fzf),可预览和执行命令
定制性 (核心优势,可自由创建/编辑) 低 (页面格式相对固定) 非常高 (可定义复杂工作流)
复杂度 简单易用 非常简单 稍高 (需要学习定义片段)
适用场景 快速回忆命令细节、自定义工作流、离线查阅 快速入门新命令、了解最常用法 需要交互式查找、执行复杂或自定义命令

选择哪个工具主要取决于你的需求:

  • 如果你需要详细的、可高度自定义的、支持离线的备忘单,cheat 是个不错的选择。
  • 如果你偏好极其简洁、专注于最常用法的示例,tldr 可能更适合。
  • 如果你追求交互式体验和强大的自定义执行流程navi 值得尝试。

社区与安全

cheat 的价值很大一部分来自于活跃的社区贡献。用户不仅可以从社区获取丰富的备忘单,也可以贡献自己的内容。

需要注意的是,在使用自定义备忘单,特别是从网络上获取或与他人共享时,应注意安全风险。务必审查备忘单内容,避免执行来源不明或包含恶意代码的命令。建议将社区备忘单目录设置为只读,并将个人备忘单与社区备忘单分开管理。

总结

cheat 是一款实用且强大的命令行备忘单工具。它通过简洁的接口、丰富的社区资源和强大的自定义能力,有效解决了命令行用户忘记命令细节的痛点。其离线可用性和与其他工具的良好集成性进一步提升了它的价值。无论你是开发者、系统管理员还是经常使用命令行的用户,cheat 都值得一试,它可能会成为你终端工具箱中不可或缺的一员。

访问项目 GitHub 仓库了解更多信息、参与贡献或报告问题:https://github.com/cheat/cheat

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。