我如何使用 Python 构建自己的 Linux 命令(适合初学者,实战)
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。
我们的目标是:
- 创建一个 Python 程序。
- 告诉 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,而是交付了一个可复用的工具。
我的收获
- 命令比看上去要简单
- 打包比核心逻辑更重要
- 干净的输出在真实工具中至关重要
- 理解胜于死记硬背
- 构建小东西能提升自信
给初学者的最终建议
不要一开始就尝试构建像 kubectl、aws cli 或完整监控系统这样的大工具。构建小而乏味、实用的工具——这才是工程师成长的正确路径。