Bash将输出重定向到tty和file

时间:2014-09-03 13:41:33

标签: bash stdout

我试图记录脚本执行的某些部分。日志应显示在第二个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?

1 个答案:

答案 0 :(得分:8)

使用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)