繁体   English   中英

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

[英]What's a simple method to dump pipe input to a file? (Linux)

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

unix命令tee就是这样做的。

man tee
cat > FILENAME

你不是一个人需要类似的东西......事实上,有人在几十年前想要这个功能并开发了三通 :-)

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

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

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

使用Procmail。 Procmail是你的朋友。 Procmail是出于这种情况而制作的。

如果要在脚本中分析它:

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

但你可以简单地使用猫。 如果cat在stdin上得到某些东西,它会将它回显到stdout,所以你必须将它传递给cat> $ OUTPUT。 这些也会这样做。 第二个也适用于二进制数据。

如果你想要一个shell脚本,试试这个:

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

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

如果你只想写入文件,那么 - tee> /tmp/log.$$或 - cat> /tmp/log.$$可能就足够了。

使用<<command>> | tee <<file>> 用于将命令<<command>>到文件<<file>> <<command>> | tee <<file>> <<file>>

这也将显示输出。

咦? 我猜,我不明白这个问题?

你不能把你的管道结束到>> ~file

例如

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

将Foobar附加到dumpfile(并在必要时创建dumpfile)。 不需要shell脚本......这就是你要找的东西吗?

如果你不关心输出结果

cat - > filename

要么

cat > filename

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM