管道

发布时间 2023-11-28 14:20:51作者: Lc---

管道

管道实际上也是一种重定向,重定向字符控制输出到文件,管道控制输出到其他程序。

管道的作用是把上一个进程的输出作为下一个进程的输入,利用管道可以把若干个命令连接在起。

 

管道有如下特征:

1)一个管道是一个字节流,从管道读取数据的进程可以读取任意大小的数据块,并且读取字节的顺序和写入的顺序是一致的
2)管道是单向的,一端写入一端读取,所以如一个线程作为读取端时要将写入端关闭,当读取管道所有数据后会看到文件结束,如果不关闭该线程写入端如果读取完数据它会一直阻塞到有数据被写入管道,因为作为读取端的线程不关闭写入,理论上也可以作为写入端向缓冲区写数据
3)管道的容量是有限的,存储能力为65536字节,管道填满后,向管道的写入操作会被阻塞直到从管道移除一些数据

 

管道符: “ | ”

 

将/etc/passwd中的用户按UID数值大小显示前三行:

 

统计当前/etc/passwd 中用户使用的Shell 类型:

取出第7列(Shell)| 排序(把相同项归类) 去重

 

tee管道

tee管道的功能类似于生活中的三通水管,一条输入满足两个需求。在执行 Linux 命令时一个进程标准输出通过管道作为下一个进程的标准输入,同时该输出通过tee 管道重定向到一个文件或终端。

注意:在使用管道时,前一个标准错误输出不会被tee读取

常用参数:

-a:追加到文件而不是覆盖文件
-i:忽略写入错误
-p:在每个输出块之前输出到标准错误
-u:不缓冲标准输出

 

把输出保存到文件中,又能在终端看到输出内容