【发布时间】:2016-12-26 13:32:32
【问题描述】:
我看过这个问题: Shell redirection i/o order.
但我还有一个问题。如果此行无法将 stderr 重定向到 file:
ls -xy 2>&1 1>file
那为什么这条线可以将stderr重定向到grep呢?
ls -xy 2>&1 | grep ls
我想知道它是如何实际上在下面运行的。
据说2>&1 将stderr 重定向到stdout 的副本。 “标准输出的副本”是什么意思?实际复制的是什么?
终端注册自己(通过操作系统)通过它创建的进程的标准流进行发送和接收,对吗?其他重定向是否也通过操作系统(我不这么认为,因为终端可以自己处理)?
【问题讨论】:
-
标准输出的副本:它是重复的,因为它使用
dup。 -
dup??你的意思是堆栈操作?在哪个堆栈上? -
dup是一个系统调用:man 2 dup。 Or here.
标签: bash shell io-redirection