Update avaliable. Click RELOAD to update.
📱 安装应用到主屏幕,获得更好体验
目录

Python 写个终端备忘录,告别重复 Google 命令

1. 你也有这个习惯吗

下午 2:17,你正在终端里用 llama.cpp 启动本地 LLM 服务。你知道 GPU 卸载的 flag 是 --ngl 或者可能是 -ngl……但后面是加空格还是等号?默认是多少层?

你 alt-tab 切到浏览器,输入”llama.cpp gpu layers flag”。翻过三个 Stack Overflow 帖子、一个 2023 年的 Reddit 讨论、官方文档(说实话,官方文档本身就是一个搜索挑战)——几分钟后回到终端,打上命令。

如果你是个开发者,或者写代码时间久到脑子里存了一个装满”半记得命令”的仓库,你一定懂这个场景。

我们不是因为老了记性不好。我们是因为用的工具太庞大、太专业、使用频率刚好够让人沮丧,但不够形成肌肉记忆。

我们已经接受了这就是”常态”。但如果不必这样呢?

2. 终端是我们住的地方——帮助为什么不能也在那里

回想你作为一个开发者,大部分生产力时间花在哪里。对很多人来说,不是花哨的 IDE 或云仪表板——是终端。那个等宽字体里闪烁的光标,是你管理文件、运行脚本、部署应用、调试问题的地方。

但需要帮助时,你离开终端。跳转到浏览器,搜索,复制粘贴,回来。一个小小的上下文切换,每天乘以几十次——累积成认知疲劳。

这就是 Fabio Matricardi 构建 TerminalHelper 的出发点:一个轻量级、基于 Python 的 CLI 应用,把你的终端变成一个自包含、可搜索的文档中心。不离开终端。 就是你的速查表,一个命令就能找到。

终端助手的核心交互

3. 核心技术:三个关键函数

整个应用围绕三个简单的函数构建,没有复杂框架。

找到正确的目录

def get_base_path() -> Path:
    """返回脚本或可执行文件所在目录"""
    if getattr(sys, "frozen", False):
        return Path(sys.executable).parent
    return Path(__file__).parent

这个函数解决了一个意料之外的问题:当你运行 python wiki-help.py 时,__file__ 指向脚本位置。但当 PyInstaller 打包成单个 .exe 后,脚本的行为变了。秘诀是 sys.executable 始终指向实际运行的程序——无论是 python.exe 还是 WikiHelp.exe

使用 .parent 就能得到可执行文件所在的文件夹。从那里,只需一个相对路径就能找到 documentation/ 目录。

这个设计的妙处:更新文档不需要重新构建应用

扫描加载文档

def load_documents(doc_dir: Path) -> list:
    if not doc_dir.exists():
        print("📄 No documents found")
        return []
    return sorted(doc_dir.glob("*.md"), doc_dir.glob("*.txt"))

这个函数体现了关键原则:乐于助人,不乱报错。真实世界的工具会遇到混乱的环境,代码应该预期这一点。

交互循环

核心交互流程:

  1. 获取文档文件夹路径,加载可用文件
  2. 如果找不到文件,优雅退出并显示清晰消息
  3. 菜单循环:列出文档 → 输入关键词搜索 → Rich 高亮匹配结果 → 按回车返回列表
  4. 新增一个 Markdown 文件到文件夹,下次启动自动出现——零配置
def main() -> None:
    doc_dir = get_base_path() / "documentation"
    docs = load_documents(doc_dir)
    if not docs:
        console.print("\n[bold red]📄 No documents found.[/bold red]")
        return
    # 交互循环...

4. 打包与使用

安装依赖和运行:

# 创建虚拟环境
python -m venv venv
source venv/bin/activate

# 安装依赖
pip install rich pyinstaller

# 运行
python wiki-help.py

# 打包可执行文件
pyinstaller --onefile --name terminal-helper wiki-help.py

⚠️ 关键:用虚拟环境打包。 如果在全局安装中构建,会包含所有已安装的 Python 包,生成的文件体积会大很多。

打包后,把 .md 文档放到可执行文件旁边的 documentation/ 目录。运行程序,输入关键词搜索——就这么简单。

5. 作者的哲学

在职业生涯的这个阶段,我们已经看过太多框架来了又走。学到的一件事是:简单不是妥协,简单是功能。

TerminalHelper 拥抱这种理念:

“先解决面前的问题,用最简单的工具,为别人留下学习空间。”

项目代码在 GitHub 上:github.com/fabiomatricardi/terminalhelper

6. 使用场景

它不是 AI 助手。不索引代码库。不预测你的下一个命令。它就在那里,你需要时出现,不需要时隐退。

对于我们这些经验丰富的电脑用户来说:最好的工具不是最复杂的,而是那些融入工作流、让你专注做事的工具。

相关链接:

版权所有,本作品采用知识共享署名-非商业性使用 3.0 未本地化版本许可协议进行许可。转载请注明出处:https://www.wangjun.dev//2026/05/terminal-helper-python-cli-cheatsheet/