|
|
发表于 2007-11-8 16:17:07
|
显示全部楼层
Post by iso;1779249
管道只能定向到输出,重定向不仅能定向到输出还能定向到输入,所以说它是双向的
>为重定向输出。 <为重定向输入。 |为管道。
如果“管道只能定向到输出,重定向不仅能定向到输出还能定向到输入”
那么 “ >重定向输出 == |为管道”
那么你试一下这两条命令结果会相等吗?
echo "what are you doing?" > /dev/pts/4
echo "what are you doing?" | /dev/pts/4
管道就是管道,根本定不了向。 只能说重定向有输入输出设备端口的参与,管道只有输出设备端口的参与。
基本上linux命令接受和输出数据都通过 stdin(标准输入) stdout(标准输出) stder(标准错误)三种端口。
重定向是:改变命令接受和输出数据的标准输入输出设备端口,指定任
意一个你想要的输入输出设备端口。
管道是:命令输出的数据通过标准输出端口送给后一条命令,作为该命
令的输入数据。
Xenofex这老兄讲得很好
“重定向是文件到程序或者程序到文件,管道则直接是程序到程序 ”
如果改成
“重定向是程序到输入输出设备端口,管道则直接是程序到程序”
或者改成
“重定向是命令到输入输出设备端口,管道则直接是命令到命令”
这样就更好了! |
|