这究竟是做什么的:exec> > (命令)

时间:2011-05-28 11:23:25

标签: bash

我看到了herehere too以下结构:

exec > >(tee -a script.log)

我知道tee命令是什么,而(命令...)通常意味着在子shell中执行command,exec用一个程序替换当前的shell,如exec ls,(但这里没有命令)另外还有> >的含义?

有人可以澄清这种黑暗的威胁吗?

exec >{space}> (command)

@Seth? :)任何指针,我可以阅读更多关于这个魔法将不胜感激。 :)

1 个答案:

答案 0 :(得分:8)

它将当前bash会话替换为另一个会话,并将所有命令的输出写入script.log

通过这种方式,您可以正常使用bash外壳,并且您不会发现任何差异(主要是),但所有输出都会显示在屏幕上script.log文件中。

来自exec manpages

  

如果提供了命令,它将替换shell而不创建新进程。如果未指定命令,则可以使用重定向来影响当前的shell环境。

>(tee -a script.log)魔术会创建一个管道,所以我们不会像我们那样写文件(在这种情况下使用>> script.log),而是写入进程tee -a script.log,它会执行相同。由于某些原因我不知道,使用>>不起作用,但写入命名管道是有效的。 Source here