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

有帮助吗?

解决方案

unix 命令 tee 可以做到这一点。

man tee

其他提示

cat > FILENAME

您并不孤单需要类似的东西......事实上,几十年前就有人想要这个功能并开发了 球座 :-)

当然,您可以使用 > 字符将 stdout 直接重定向到任何 shell 中的文件:

echo "hello, world!" > the-file.txt

标准的 UNIX 工具 Tee 可以做到这一点。它将输入复制到输出,同时还将其记录到文件中。

使用Procmail。Procmail 是你的朋友。Procmail 就是为这类事情而设计的。

如果想在脚本中分析:

while /bin/true; do
    read LINE
    echo $LINE > $OUTPUT
done

但你可以简单地使用cat。如果 cat 在标准输入上获取某些内容,它会将其回显到标准输出,因此您必须将其通过管道传输到 cat >$OUTPUT。这些也会做同样的事情。第二个也适用于二进制数据。

如果您想要 shell 脚本,请尝试以下操作:

#!/bin/sh
exec cat >/path/to/file

如果 exim 或 sendmail 是写入管道的内容,那么 procmail 是一个很好的答案,因为它会给您文件锁定/序列化,并且您可以将它们全部放在同一个文件中。

如果您只想写入文件,则-Tee> /tmp/log.$$或-CAT> /tmp/log.qubly可能足够好。

使用 <<command>> | tee <<file>> 用于管道命令 <<command>> 到一个文件中 <<file>>.

这也将显示输出。

啊?我想,我没听懂这个问题?

你不能把你的管道末端插入一个 >> ~file

例如

echo "Foobar" >> /home/mo/dumpfile

会将 Foobar 附加到转储文件(并在必要时创建转储文件)。不需要 shell 脚本...这就是您要找的吗?

如果你不关心输出结果

cat - > filename

或者

cat > filename
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top