Linux 入门:用管道把几个命令串成一条流水线
刚学 Linux 的新手常常是这样用命令的:先敲一个命令看结果,再把结果抄下来,手动喂给下一个命令。数据量一小,这么做还行;数据一多,抄错一行、漏掉一个数字都很正常。其实 Linux 早就准备好了一个更省事的办法:管道。用竖线把几个命令连起来,前一个命令的输出,直接变成下一个命令的输入,中间不需要你动手转抄。
先理解一个比喻。管道像工厂里的传送带:第一个工位做出半成品,传送带直接送到下一个工位加工,最后出来的就是成品。你不需要在每个工位之间搬运货物,传送带替你搬了。在命令行里,竖线就是这条传送带。比如先用一个命令列出文件,再把结果送给筛选命令,只留下你想要的那几行,整个过程一次敲完,不用中间停下来复制粘贴。
最常见的起手组合是查看加筛选。列出当前目录的文件很多时,直接看会眼花;把列表送给筛选命令,只保留包含某个关键词的行,画面立刻干净了。再进一步,把筛选结果送给计数命令,就能直接得到符合条件的行数,而不用自己一行行数。这三个步骤串起来,就是一条最简单的流水线:产出、筛选、计数,每一步只做一件事,合起来却解决了一个完整的问题。
管道真正好用的地方,在于每个命令都可以保持简单。你不需要找一个什么都能干的万能命令,而是把几个小命令拼起来。想看系统里最占空间的文件?先列出文件和大小,再按大小排序,最后只取前几行,三个小命令各司其职。想从日志里找报错?先读日志文件,再筛选出包含错误关键词的行,最后只看最新的几条,同样是一条流水线。思路都是一样的:先拿到原始数据,再一步步把它变小、变干净,直到剩下你真正想看的东西。
用管道时有三条新手容易踩的坑。第一,分不清输出和错误:管道默认只传送正常输出,报错信息走另一条通道,不会跟着传送带走,所以筛选不到报错时不要惊讶,那不是命令坏了,而是报错本来就不在传送带上。第二,顺序写反:筛选要在排序之前还是之后,取决于你想先缩小范围还是先排好顺序,顺序不同,结果可能完全不同,动手前先想清楚每一步的输入应该是什么样子。第三,贪多求全:一条命令里串七八个环节,出错时很难定位是哪一步出了问题;新手建议先两三步起步,跑通了再慢慢加环节,每加一步就看一眼中间结果对不对。
还有一个好习惯:先拆开验证,再串起来。写流水线之前,先单独跑每一个命令,确认它单独运行时输出是你想要的样子,再用竖线把它们连起来。这样一旦最后结果不对,你也知道每个环节单独都是对的,问题一定出在连接方式或顺序上,排查范围立刻小了很多。反过来,如果一上来就写一长串,出错时只能从头猜起,费时又容易挫败。
给新手的练习建议是:今天就练两条流水线。第一条,列出当前目录的文件,筛选出你关心的类型,再数一数有几个;第二条,读一个文本文件,筛选出包含某个词的行,只看最后几条。两条都跑通之后,你会发现命令行不再是一个个孤立的命令,而是一套可以自由组合的工具。命令还是那些命令,但有了管道,它们就从单件工具变成了一条能干活的流水线。
- 点赞
- 收藏
- 关注作者
评论(0)