什么';将管道输入转储到文件的简单方法是什么?(Linux)
我正在寻找一个小的shell脚本,它可以接受任何管道中的内容,并将其转储到一个文件中。。用于电子邮件调试目的。有什么想法吗?使用Procmail。Procmail是你的朋友。Procmail就是为这类事情而设计的。unix命令tee就是这样做的什么';将管道输入转储到文件的简单方法是什么?(Linux),linux,pipe,exim,Linux,Pipe,Exim,我正在寻找一个小的shell脚本,它可以接受任何管道中的内容,并将其转储到一个文件中。。用于电子邮件调试目的。有什么想法吗?使用Procmail。Procmail是你的朋友。Procmail就是为这类事情而设计的。unix命令tee就是这样做的 man tee 标准unix工具tee可以做到这一点。它将输入复制到输出,同时也将其记录到文件中。需要类似功能的并非只有您一人。。。事实上,几十年前就有人想要这个功能,并开发了:-) 当然,您可以使用>字符将stdout直接重定向到任何shell中的文
man tee
标准unix工具tee可以做到这一点。它将输入复制到输出,同时也将其记录到文件中。需要类似功能的并非只有您一人。。。事实上,几十年前就有人想要这个功能,并开发了:-) 当然,您可以使用>字符将stdout直接重定向到任何shell中的文件:
echo "hello, world!" > the-file.txt
嗯?我想,我不明白这个问题 难道你不能把你的管道端到一个
>>文件中吗
比如说
echo "Foobar" >> /home/mo/dumpfile
将Foobar附加到转储文件(并在必要时创建转储文件)。不需要shell脚本。。。这就是您想要的吗?如果您想在脚本中分析它:
while /bin/true; do
read LINE
echo $LINE > $OUTPUT
done
但是你可以简单地使用cat。如果cat在stdin上获取了一些内容,它会将其回显到stdout,因此您必须通过管道将其传输到cat>$OUTPUT。这些也会起到同样的作用。第二种方法也适用于二进制数据。如果您不关心输出结果
cat - > filename
或
如果需要shell脚本,请尝试以下操作:
#!/bin/sh
exec cat >/path/to/file
如果将exim或sendmail写入管道,那么procmail是一个很好的答案,因为它将为您提供文件锁定/序列化,并且您可以将所有文件都放在同一个文件中
如果您只想写入一个文件,那么
-tee>/tmp/log$$
或
-cat>/tmp/log$$
可能已经足够了。使用|tee
将命令
导入文件
这也将显示输出。此解决方案的另一个优点是,如果您缺少创建文件的权限,您将在stderr
上收到错误消息。
cat > filename
#!/bin/sh
exec cat >/path/to/file