exec > >(tee -a script.log)
Run Code Online (Sandbox Code Playgroud)
我知道tee命令是什么,而(命令...)通常意味着command
在子shell中执行,而exec用一个程序替换当前的shell,比如exec ls
(但这里没有命令),另外的意思是什么的> >
?
任何人都能澄清这种黑暗的威胁吗?
exec >{space}> (command)
Run Code Online (Sandbox Code Playgroud)
@Seth?:)任何指针,我可以阅读更多关于这个魔法将不胜感激.:)
它将当前bash
会话替换为另一个会话,并将所有命令的输出写入script.log
.
这样一来,你可以用你的bash
正常的外壳,你不会看到任何差别(主要是),但所有的输出将显示在屏幕上,并在在script.log
文件中.
如果提供了命令,它将替换shell而不创建新进程.如果未指定命令,则可以使用重定向来影响当前的shell环境.
该>(tee -a script.log)
魔术创建一个管道,所以不是写一个文件一样,我们将(与>> script.log
在这种情况下),我们写的过程中tee -a script.log
,这不相同.由于某种原因我不知道,使用>>
不起作用,但写入命名管道工作.来源于此