管道是一个缓冲区,将一个程序的标准输出到管道里,另一个程序的标准输入为管道出口。
管道的语法非常简单,使用竖线符号 | 将两个命令连接起来。例如:
command1 | command2
- 过滤器:通过管道将一个命令的输出传递给另一个命令进行处理。
cat file.txt | grep “pattern”
这个命令将文件 file.txt 的内容传递给 grep 命令,用于过滤包含指定模式的行。 - 排序:通过管道将数据传递给 sort 命令进行排序。
ls | sort
排序是按每行作为一组数据,它会按照每行的第一个字符的 ASCII 码值来进行排序。
sort filename
按数值顺序排序:sort -n filename会将每行中的所有数字当成一个数字(如果行中包含非数值字符,则会被视为零),然后进行排序。 - 计数:通过管道将数据传递给 wc 命令进行计数。
cat file.txt | wc -l
这个命令将文件 file.txt 的内容传递给 wc 命令,统计文件中的行数。它是 “word count” 的缩写。
-c:显示字节数。
-w:显示字数(单词数)。
-l:显示行数。 - 组合多个命令:通过管道组合多个命令,实现复杂的操作。
ps aux | grep “process” | awk ‘{print $2}’ | xargs kill -9
这个命令将 ps 命令的输出传递给 grep 进行过滤,然后将结果传递给 awk 进行处理,最后将结果传递给 xargs 来执行 kill 命令。
在shell中管道的主要用途就是处理文本信息:过滤,排序,去重,统计计数,替换。