我正在尝试记录脚本执行的某些部分.日志应显示在第二个tty,并写入日志文件.
我可以用一个简单的方法做到:
echo "Hello log" > /dev/tty2
echo "Hello log" > /var/log/my_logs
Run Code Online (Sandbox Code Playgroud)
但它非常不舒服.我还可以将echo重定向到特定的地方:
exec 1<>/var/log/my_logs
exec 2>&1
Run Code Online (Sandbox Code Playgroud)
但是如何将STDOUT同时重定向到/ dev/tty2和/ var/log/my_logs?
使用tee.
echo "Hello log" | tee /dev/tty2 /var/log/my_logs > /dev/null
Run Code Online (Sandbox Code Playgroud)
(最后的重定向是为了防止输出也出现在标准输出中.你也可以使用echo "Hello log" | tee /dev/tty2 > /var/log/my_logs;两者之间没有真正的区别.tee只需将标准输入写入标准输出和一个或多个命名文件.)
要将所有标准输出重定向到该对,请使用进程替换exec.
exec > >(tee /dev/tty2 /var/log/my_logs)
Run Code Online (Sandbox Code Playgroud)