Rob*_*rts 5 bash io-redirection
我在使用 exec 重定向所有后续命令的标准错误中找到了一个很好的解决方案。
我用的例子:
exec > >(tee $somelog) 2>&1
Run Code Online (Sandbox Code Playgroud)
...并设法使一切变得更好tee。现在,我如何再次关闭它?
如果您提前计划,最好的解决方案可能是首先保存描述符,或者在附属范围内进行重定向,如评论中链接的问题所示。
但是,如果您没有这样做,那么您可以使用以下命令恢复直接写入终端:
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 即可让您恢复正常。
| 归档时间: |
|
| 查看次数: |
917 次 |
| 最近记录: |