我如何使用 Python 构建自己的 Linux 命令(适合初学者,实战)

发布: (2026年1月8日 GMT+8 12:40)
4 min read
原文: Dev.to

Source: Dev.to

为什么要自己构建命令?

因为它一次性教会你三件重要的事:

  • Linux 命令到底是怎么工作的
  • Python 包是如何组织的
  • 真正的工具是怎样发布到 PyPI 的

最关键的是,它会把你的思维从“我使用工具”转变为“我可以构建工具”。

思路(保持简单)

我想要一个只做一件小而有用事的命令:syscheck

CPU Usage: 21.4%
Memory Usage: 40.7%
Disk Usage: 16.99%

仅此而已。不要仪表盘。

在写代码之前先明白:Linux 命令不过是 PATH 中的可执行文件。当你运行 ls 时,Linux 会在 $PATH 列出的目录里搜索并执行第一个找到的 ls

我们的目标是:

  1. 创建一个 Python 程序。
  2. 告诉 Python:“把它暴露为一个命令”。

项目结构(这部分比代码更重要)

syscheck/
├── pyproject.toml
├── README.md
├── LICENSE
└── syscheck/
    ├── __init__.py
    └── main.py

为什么要在文件夹里再套一个文件夹?
外层的 syscheck/ 是项目根目录,内层的 syscheck/ 才是真正的 Python 包。Python 只能导入包,不能随意导入普通文件夹——这正是大多数初学者卡住的地方。

编写实际逻辑(保持乏味)

syscheck/main.py

import shutil
import psutil

def main():
    cpu = psutil.cpu_percent(interval=1)
    memory = psutil.virtual_memory().percent
    disk = shutil.disk_usage("/")

    disk_percent = (disk.used / disk.total) * 100

    print(f"CPU Usage: {cpu}%")
    print(f"Memory Usage: {memory}%")
    print(f"Disk Usage: {disk_percent:.2f}%")

这里没有花哨的东西。关键点是 不要重新实现系统逻辑——使用已有库(psutil),专注于干净的输出,就像真实的生产工具一样。

把 Python 变成命令

pyproject.toml

[project.scripts]
syscheck = "syscheck.main:main"

通俗解释: 创建一个叫 syscheck 的命令。没有魔法。

本地安装(生产思维)

  • 开发时

    pip install -e .
  • 生产测试时

    pip install .

安装后,Linux 会生成一个包装脚本(例如 ~/.local/bin/syscheck),它只会调用你的 Python 函数。所以当你输入 syscheck 时,流程是:

Linux → Python → your code

为什么这很重要(职业视角)

在拥有 1–2 年经验时,这能向面试官展示你:

  • 理解 Linux 内部机制
  • 理解 Python 打包
  • 像工具构建者而不是仅仅是使用者的思维

面试时你可以说:

“我用 Python 构建了一个小型 CLI 工具,并通过 Python 的打包系统把它暴露为 Linux 命令。”

仅这句话就能留下深刻印象。

发布到 PyPI(可选但强大)

当本地一切正常后,发布非常简单:

python -m build
twine upload dist/*

之后,任何人都可以通过以下方式安装:

pip install syscheck

此时,你已经不再只是学习 Python,而是交付了一个可复用的工具。

我的收获

  • 命令比看上去要简单
  • 打包比核心逻辑更重要
  • 干净的输出在真实工具中至关重要
  • 理解胜于死记硬背
  • 构建小东西能提升自信

给初学者的最终建议

不要一开始就尝试构建像 kubectlaws cli 或完整监控系统这样的大工具。构建小而乏味、实用的工具——这才是工程师成长的正确路径。

Back to Blog

相关文章

阅读更多 »

Lyra:命令行助手

我为助手编写了框架和主循环。之所以选择 CLI 助手而不是语音或 AI 助手,是因为我的硬件限制。我……