从bash命令输出创建’虚拟文件’?

前端之家收集整理的这篇文章主要介绍了从bash命令输出创建’虚拟文件’?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想知道是否有办法从bash输出创建一个“虚拟文件”.

例:
假设我想通过电子邮件mysqldump的输出作为附件发送到外部电子邮件地址.
我可以用Mutt这样做.
我需要使用的mutt选项是-a<我要附加的文件名称>.
我知道我可以使用临时文件

MysqLdump MysqLdumpoptions > /tmp/tempfile && mutt -a /tmp/tempfile admin@example.org

但我宁愿将MysqLdump输出直接重定向到Mutt.
Mutt的-a选项只接受文件而不是流,
但也许有一种方法可以传递某种虚拟文件描述符或类似的东西.
就像是:

mutt -a $(MysqLdump MysqLdumpoptions) admin@example.org

可能吗?如果没有,为什么?

这可能是一个愚蠢的例子,肯定有更简单的方法来做到这一点,但我希望它解释了我关于从另一个命令的输出创建虚拟文件的问题.

这是做你想做的最干净的方法
mutt admin@example.org -a <(MysqLdump MysqLdumpoptions)

<()运算符是你要求的;它创建一个FIFO(或/ dev / fd)并分叉进程并将stdout连接到FIFO.除了将stdin连接到FIFO之外,>()执行相同的操作.换句话说,它在幕后为你做了所有mknod的东西;或者在现代操作系统上,以更好的方式做到这一点.

当然,除了与mutt无关之外,它说:

/dev/fd/63: unable to attach file.

我怀疑问题是mutt试图在文件中寻找,你不能在任何类型的管道上做.搜索可能类似于扫描文件以确定它是什么MIME类型以及编码可能起作用(即,文件是7位还是8位),然后寻找文件的开头以实际将其编码到消息中.

如果你要发送的是纯文本,你总是可以做这样的事情,使它成为电子邮件的主要内容(不理想,但实际上有效):

MysqLdump MysqLdumpoptions | mutt -s "Here's that MysqLdump" admin@example.org
原文链接:https://www.f2er.com/bash/386178.html

猜你在找的Bash相关文章