是否可以从 stdout/stderr 创建粘性重定向

是否可以从 stdout/stderr 创建粘性重定向

考虑这样的代码:

echo hello >> log.txt
echo world >> log.txt

我使用标准输出重定向执行命令。是否可以创建粘性重定向?像这样的东西:

redir stdout log.txt
echo hello
echo world
stop-redir

这相当于第一段代码。

我真正需要的是——为 stdout 和 stderr (同时)进行粘性重定向,执行一些命令,停止重定向,并读取日志文件。

答案1

exec 3>&1 4>&2 >log.txt 2>&1
echo hello
echo world
exec 1>&3 2>&4
less log.txt

即:制作文件描述符3和4当前1(stdout)和2(stderr)的副本,将1重定向到log.txt,将2重定向到与1相同的;然后执行命令;然后从文件描述符 3 和 4 中保存的值恢复 stdout 和 stderr。

相关内容