我认为,“管道”概念的天才在于使用的简便性。
您无需进行任何系统调用,分配内存,也没有什么复杂的。在外壳程序中,您使用单个字符:|
。通过将简单(或复杂)工具组合到给定任务中,可以赋予非凡的力量。
进行一些日常工作,例如整齐地对文本进行排序。您可能有一个列出整个名称的命令。(对于我的示例,我将使用一个包含一堆名称的文件,由listofrandomnames.com提供。)使用管道,您可以执行以下操作:
$ cat names.txt
Sally Weikel
Dana Penaflor
Christine Hook
Shaneka Flythe
Almeda Crook
Freddie Lindley
Hester Kersh
Wanda Ruse
Megan Mauzy
Samuel Mancha
Paris Phipps
Annika Accardo
Elena Nabors
Caroline Foti
Jude Nesby
Chase Gordy
Carmela Driggers
Marlin Ostendorf
Harrison Dauber
$ cat names.txt | awk '{print $2 ", " $1}' | sort | uniq | column -c 100
Accardo, Annika Hook, Christine Ostendorf, Marlin
Crook, Almeda Kersh, Hester Penaflor, Dana
Dauber, Harrison Lindley, Freddie Phipps, Paris
Driggers, Carmela Mancha, Samuel Ruse, Wanda
Flythe, Shaneka Mauzy, Megan Weikel, Sally
Foti, Caroline Nabors, Elena
Gordy, Chase Nesby, Jude
这只是一个例子。有成千上万。有关通过管道使使用起来非常简单的其他一些特定任务,请参见本页的 “ Unix哲学”部分。
要强调此答案,请参见演示文稿的幻灯片4至9 ,“为什么Zsh比您的Shell更酷”。
我知道上面的命令包括一个UUOC。我让它保持立场,因为它是生成文本的任意命令的占位符。