从bash命令输出创建’虚拟文件’?
我想知道是否有办法从bash输出创建一个“虚拟文件”.
例: mysqldump mysqldumpoptions > /tmp/tempfile && mutt -a /tmp/tempfile admin@example.org 但我宁愿将mysqldump输出直接重定向到Mutt. 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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |