浅说shell中I/O重定向与管道的区别

自己做个浅显的小笔记

linux中shell的I/O重定向与管道,乍一看很类似,但实际它们还是有很大区别的

管道:“|”,是将前一个命令的输出(stdout)作为后一个命令的输入(stdin)

例如:ls -l | grep php
是将ls -l的原本输出结果,传输给grep命令,只输出匹配php字符的行内容

注意点:管道只处理正确的输出,将正确的作为下一个的输入,并且确定下一个是可以接受输入的命令,否则放弃命令

管道与重定向的区别:

1、左边是有stdout(标准输出)的命令 | 右边是能够接受stdin(标准输入)的命令

    左边是有输出的命令 > 右边只能是文件

    左边是能接受输入的命令 < 右边只能是文件

2、管道执行时,触发了两个进程,分别执行左右两边的命令

    重定向是在一个进程中完成的

原文地址:https://www.cnblogs.com/huangzhen/p/2147921.html