将管道输入转储到文件的简单方法是什么? (Linux)
我正在寻找一个小 shell 脚本,它可以将任何内容通过管道传输到其中,并将其转储到文件中..用于电子邮件调试目的。 有任何想法吗?
I'm looking for a little shell script that will take anything piped into it, and dump it to a file.. for email debugging purposes. Any ideas?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(11)
unix 命令 tee 可以做到这一点。
The unix command tee does this.
啊? 我想,我没听懂这个问题?
难道你不能将管道结束为
>> 将
例如,
Foobar 附加到转储文件(并在必要时创建转储文件)。 不需要 shell 脚本...这是您正在寻找的吗?
Huh? I guess, I don't get the question?
Can't you just end your pipe into a
>> ~file
For example
will append Foobar to the dumpfile (and create dumpfile if necessary). No need for a shell script... Is that what you were looking for?
如果你不关心输出结果
或者
if you don't care about outputting the result
or
如果你想在脚本中分析它:
但是你可以简单地使用cat。 如果 cat 在标准输入上获取某些内容,它会将其回显到标准输出,因此您必须将其通过管道传输到 cat >$OUTPUT。 这些也会做同样的事情。 第二个也适用于二进制数据。
If you want to analyze it in the script:
But you can simply use cat. If cat gets something on the stdin, it will echo it to the stdout, so you'll have to pipe it to cat >$OUTPUT. These will do the same. The second works for binary data also.
如果您想要 shell 脚本,请尝试以下操作:
If you want a shell script, try this:
如果 exim 或 sendmail 是写入管道的内容,那么 procmail 是一个很好的答案,因为它会给您文件锁定/序列化,并且您可以将它们全部放在同一个文件中。
如果你只想写入一个文件,那么
- 三通 > /tmp/log.$$
或者
- 猫> /tmp/log.$$
可能就足够好了。
If exim or sendmail is what's writing into the pipe, then procmail is a good answer because it'll give you file locking/serialization and you can put it all in the same file.
If you just want to write into a file, then
- tee > /tmp/log.$$
or
- cat > /tmp/log.$$
might be good enough.
您并不是唯一需要类似功能的人......事实上,几十年前就有人想要该功能并开发了 tee :-)
当然,您可以使用 >tee 将 stdout 直接重定向到任何 shell 中的文件 特点:
You're not alone in needing something similar... in fact, someone wanted that functionality decades ago and developed tee :-)
Of course, you can redirect stdout directly to a file in any shell using the > character:
标准的 UNIX 工具 Tee 可以做到这一点。 它将输入复制到输出,同时还将其记录到文件中。
The standard unix tool tee can do this. It copies input to output, while also logging it to a file.
使用Procmail。 Procmail 是你的朋友。 Procmail 就是为这类事情而设计的。
Use Procmail. Procmail is your friend. Procmail is made for this sort of thing.
使用
<>; | tee <>
用于将命令<>
通过管道传输到文件<>
。这也将显示输出。
Use
<<command>> | tee <<file>>
for piping a command<<command>>
into a file<<file>>
.This will also show the output.