我正在尝试记录脚本执行的某些部分。日志应在第二个 tty 显示,并写入日志文件。
我可以用一个简单的方法来做到这一点:
echo "Hello log" > /dev/tty2
echo "Hello log" > /var/log/my_logs
但是很不舒服。我还可以将 echo 重定向到特定位置:
exec 1<>/var/log/my_logs
exec 2>&1
但是我怎样才能同时将 STDOUT 重定向到/dev/tty2 和/var/log/my_logs?
最佳答案
使用tee
。
echo "Hello log" | tee /dev/tty2 /var/log/my_logs > /dev/null
(最后的重定向也是为了防止输出出现在标准输出中。您也可以使用 echo "Hello log"| tee/dev/tty2 >/var/log/my_logs
;两者之间没有真正的区别。tee
只是将标准输入写入标准输出和一个或多个命名文件。)
要将所有标准输出重定向到该对,请使用带有 exec
的进程替换。
exec > >(tee /dev/tty2 /var/log/my_logs)
关于Bash 将输出重定向到 tty 和文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25645946/