将管道输入转储到文件的简单方法是什么? (Linux)的

时间:2008-09-16 20:33:40

标签: linux pipe exim

我正在寻找一个小的shell脚本,它会将任何管道传输到其中,并将其转储到文件中......用于电子邮件调试目的。有什么想法吗?

11 个答案:

答案 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