编程与开发 · 第 2 期

Linux 命令背了 200 条,还是不会用?

管道才是灵魂 · the Unix philosophy

记 200 条命令不如会 10 条管道——Linux 的灵魂是组合不是记忆。每个命令都是小工具,| 把它们串成大能力。会管道的人,10 条命令能拼出 1000 种用法;只会背命令的人,背 200 条也只能解决 200 个固定问题。
⏱ 约 11 分钟 🎯 想真正会用命令行的开发者 📦 源:linux-command 教程

01一个反共识:灵魂是 |,不是命令

Unix 最伟大的发明不是某条命令,是那个竖线 |——管道。它做了一件极简单又极 powerful 的事:

把上一个命令的输出,变成下一个命令的输入。

这一条规则让每个命令都成了"积木"。你不需要一个"找出最大文件"的命令,你只需要 du(算大小)+ sort(排序)+ head(取前几条),用 | 串起来。工具各做各的,组合由你决定。

对比 Windows 早期:每个程序自己造轮子,"找最大文件"得装专门软件。Unix 的管道让 1000 个小工具组合出 100 万种用法——这就是"灵魂"。

Linux 的灵魂不是命令,
是那个竖线。
灏天文库 · 编程与开发 P.05

02管道拼装闯关:自己拼一遍

选一关,把下面的命令块按正确顺序点进管道,组成能完成任务的命令。点错了可以点管道里的块移除。

🧩 管道拼装闯关
选关 → 按顺序点命令块拼管道 → 检查对错。
点上方命令块按顺序拼管道…
选一关开始
10 条命令 + |,
胜过200 条死命令。
灏天文库 · 编程与开发 P.06

03管道背后的三件事:stdin/stdout/stderr

管道能成立,是因为每个 Unix 命令都有三个标准通道:

理解这三件事,你就能解释一堆"奇怪现象":ls 不存在 2>&1 | grep 为什么能 grep 到错误(把 stderr 合并进 stdout);cmd < file 为什么等价于 cat file | cmd(都喂 stdin);tee 为什么能在管道中间"分叉"(同时写 stdout 和文件)。

懂 stdin/stdout/stderr,
管道就透明了。
灏天文库 · 编程与开发 P.07

04带走这套清单

✅ 管道思维 6 条可执行规则

  1. 别背命令,记组合:常用命令就 10 来条,靠 | 串出所有用法。
  2. 每个命令想清楚三件事:它读 stdin 吗、写 stdout 吗、参数是什么。
  3. stderr 不进管道:错误信息要 grep,先 2>&1 合并进 stdout。
  4. 调试从分段查:管道不工作,逐段加 head 看中间输出,定位坏在哪一节。
  5. 用 tee 分叉:想既看结果又存文件,cmd | tee out.log。
  6. 造自己的命令:写个读 stdin 写 stdout 的脚本,立刻就能进管道当积木。
会拼管道的人,
10 条命令当1000 条用。
灏天文库 · 编程与开发 P.08