我正在寻找一个小的shell脚本,它会将任何管道传输到其中,并将其转储到文件中......用于电子邮件调试目的。有什么想法吗?
答案 0 :(得分:24)
unix命令tee就是这样做的。
man tee
答案 1 :(得分:10)
cat > FILENAME
答案 2 :(得分:9)
你并不是唯一一个需要类似东西的人...事实上,有人在几十年前想要这个功能并开发tee: - )
当然,您可以使用>将stdout直接重定向到任何shell中的文件。字符:
echo "hello, world!" > the-file.txt
答案 3 :(得分:5)
标准的unix工具T恤可以做到这一点。它将输入复制到输出,同时将其记录到文件中。
答案 4 :(得分:2)
使用Procmail。 Procmail是你的朋友。 Procmail就是出于这种情况。
答案 5 :(得分:1)
如果您想在脚本中分析它:
while /bin/true; do
read LINE
echo $LINE > $OUTPUT
done
但你可以简单地使用猫。如果cat在stdin上获取了某些东西,它会将它回显到stdout,所以你必须将它传递给cat> $ OUTPUT。这些也会这样做。第二个也适用于二进制数据。
答案 6 :(得分:1)
如果你想要一个shell脚本,试试这个:
#!/bin/sh
exec cat >/path/to/file
答案 7 :(得分:1)
如果exim或sendmail正在写入管道,那么procmail是一个很好的答案,因为它会给你文件锁定/序列化,你可以把它全部放在同一个文件中。
如果您只想写入文件,那么 - tee> /tmp/log.$$ 要么 - 猫> /tmp/log.$$ 可能还不错。
答案 8 :(得分:1)
使用<<command>> | tee <<file>>
将命令<<command>>
传递到文件<<file>>
。
这也将显示输出。
答案 9 :(得分:0)
咦?我想,我不明白这个问题?
您不能将管道结束为>> ~file
例如
echo "Foobar" >> /home/mo/dumpfile
会将Foobar附加到dumpfile(并在必要时创建dumpfile)。不需要shell脚本......这就是你要找的东西吗?
答案 10 :(得分:0)
如果您不关心输出结果
cat - > filename
或
cat > filename