Menu
CoddyTech

串联多个命令

本课属于 Coddy Terminal 学习旅程的“基础知识”单元。第 45 课,共 82 课。

你不必只连接两个命令。管道可以按需串联任意多个命令,每个命令都会处理前一个命令的输出。

只需添加更多 | 符号即可延长管道:

cat data.txt | sort | head -5

这会读取文件,按字母顺序对所有行排序,然后只显示前 5 个结果。数据会依次通过每个命令,从左向右流动。

下面是一个查找排序后不重复条目的实用示例:

cat names.txt | sort | uniq

文件内容会先排序(这样重复项就会排在一起),然后 uniq 会删除连续的重复行。这里顺序很重要:uniq 只能删除相邻的重复项,所以必须先排序。

你还可以添加更多步骤。要统计有多少个不重复的名称:

cat names.txt | sort | uniq | wc -l

每个管道都会添加一个转换步骤。构建较长的管道时,要考虑每个命令需要什么输入,以及会产生什么输出。一个命令的输出格式必须适合作为下一个命令的输入。

challenge icon

挑战

简单

文件 visitors.txt 中包含一份访客姓名列表,其中有重复项。使用包含四条命令的管道,统计不重复的访客人数。

运行一条命令,完成以下操作:

  • 使用 cat 读取 visitors.txt
  • 通过管道将结果传给 sort,按字母顺序排列姓名
  • 通过管道将结果传给 uniq,移除重复项
  • 通过管道将结果传给 wc -l,统计不重复的姓名数量

提示:使用多个 | 符号将四条命令连接起来。请记住,uniq 只能移除相邻的重复项,因此必须先排序。

亲手试试

终端
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

基础知识中的所有课

自己练习: Terminal 在线编辑器