从标准输入创建临时文件

千吨

假设我有一个标准的文件内容输入流,并且有一个命令期望文件名作为参数,并且我想在由标准输入流的文件内容组成的文件上运行该命令。

例如,代替命令

imageviewer mouse.jpg

我想要一条神奇的线magic,使之等同于

cat mouse.jpg | magic

会是什么这个magic样子的zsh还是bash

最好,我希望它看起来像

cat mouse.jpg | submagic | xargs imageviewer

也就是说,我想submagic从标准输入流创建一个临时文件,并输出创建的文件的文件名。

magic线submagic应该是仅使用bash或zsh命令,其内置函数,GNU coreutils等的shell管道。


这是整个问题。下面仅是澄清和背景,因为人们不断误解我的意思。


好吧,所以我想我说清楚了,但似乎我没有:我真的想有一条管道做的相当于

imageviewer mouse.jpg

开始正好cat mouse.jpg | …也就是说,我真的正是一条线magicsubmagic使得准确上述工作的管道-我的意思是我的问题从字面上。

特别是,这意味着以下建议的解决方案将无法使用:

  • 开始与 tmpfile = $(mktemp); cat mouse.jpg | …
  • 改写成 imageviewer =(cat mouse.jpg)
  • 改写成 echo mouse.jpg | xargs imageviewer
  • 使用函数或二进制来解决它,例如通过定义 function magic () { … }

可以说,我感兴趣的是是否可以编写一个别名,alias magic='…'或者alias submagic='…'可以使上述管道之一正常工作,以及使这些别名的定义仅包含bash或zsh命令,GNU coreutils等之类的东西–没有自写的东西。

另一条评论您认为imageviewerfehorsxiv或某物。

背景当我尝试使用邮件客户端打开附加到邮件的多个图像文件时,出现了这个问题neomuttNeomutt提供了标记附加文件的功能,然后将文件内容通过管道传递到您可以键入的命令行。因此,在这里,我只能提供在给定的标准输入流上执行某些操作的命令行。这就是问题的出处。但是我对最初的问题不感兴趣,而仅对这个问题感兴趣。

以撒

为了满足您的问题的确切要求,您可以执行以下操作:

cat mouse.jpg | { tf=$(mktemp); cat >"$tf"; echo "$tf"; } | xargs imageviewer

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章