人!
这到底是做什么的?
exec 4<&1
我理解为&#34;使输出成为fd 4&#34;的输入。但如果是这样,以下为什么不起作用?
echo a 4>temp.log
我希望这会印刷&#34; a&#34;在屏幕上并将其存储在temp.log文件中。 我知道我可以用发球台做同样的事情,但我不知道为什么它不会像这样工作。
我哪里错了?
答案 0 :(得分:2)
<&
是复制输入文件描述符。 4<&1
表示创建一个新的文件描述符4,当从中读取时,它将获得与fd 1相同的内容。
您需要将stdout
写入fd 4 1>&4
。但是,它不起作用,因为文件描述符4尚不存在。你必须这样做:
exec 4>temp.log
exec 1>&4
第一行将所有输出重定向到fd 4到该文件;第二个将标准输出重定向到fd 4.然而,它仍然不会做你想要的; &#34;重复&#34;文件描述符并不意味着输出被发送到2个地方,而是它将被发送到其他地方。在这些句子之后,所有输出都将被发送到&#34; temp.log&#34;,但不再发送到先前的标准输出。