打开重定向后如何关闭它?

Rob*_*rts 5 bash io-redirection

我在使用 exec 重定向所有后续命令的标准错误中找到了一个很好的解决方案。

我用的例子:

exec > >(tee $somelog) 2>&1
Run Code Online (Sandbox Code Playgroud)

...并设法使一切变得更好tee。现在,我如何再次关闭它?

Mic*_*mer 4

如果您提前计划,最好的解决方案可能是首先保存描述符,或者在附属范围内进行重定向,如评论中链接的问题所示

但是,如果您没有这样做,那么您可以使用以下命令恢复直接写入终端:

exec > $(tty)
Run Code Online (Sandbox Code Playgroud)

前提是您还没有重定向标准输入。

如果您重定向标准输入,则可以使用:

exec > /dev/tty
Run Code Online (Sandbox Code Playgroud)

,这也稍微快一些。


这些重置了终端的标准输出。要专门重置标准错误,请使用:

exec 2> ...
Run Code Online (Sandbox Code Playgroud)

无论您从上面选择哪个选项。


如果您只是陷入困境并想摆脱困境,请注意,只需退出并重新启动 shell 即可让您恢复正常。