假设我有一个标准的文件内容输入流,并且有一个命令期望文件名作为参数,并且我想在由标准输入流的文件内容组成的文件上运行该命令。
例如,代替命令
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 | …
。也就是说,我真的想正是一条线magic
或submagic
使得准确上述工作的管道-我的意思是我的问题从字面上。
特别是,这意味着以下建议的解决方案将无法使用:
tmpfile = $(mktemp); cat mouse.jpg | …
imageviewer =(cat mouse.jpg)
echo mouse.jpg | xargs imageviewer
function magic () { … }
可以说,我感兴趣的是是否可以编写一个别名,alias magic='…'
或者alias submagic='…'
可以使上述管道之一正常工作,以及使这些别名的定义仅包含bash或zsh命令,GNU coreutils等之类的东西–没有自写的东西。
另一条评论。您认为imageviewer
是feh
orsxiv
或某物。
背景。当我尝试使用邮件客户端打开附加到邮件的多个图像文件时,出现了这个问题neomutt
。Neomutt提供了标记附加文件的功能,然后将文件内容通过管道传递到您可以键入的命令行。因此,在这里,我只能提供在给定的标准输入流上执行某些操作的命令行。这就是问题的出处。但是我对最初的问题不感兴趣,而仅对这个问题感兴趣。
为了满足您的问题的确切要求,您可以执行以下操作:
cat mouse.jpg | { tf=$(mktemp); cat >"$tf"; echo "$tf"; } | xargs imageviewer
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句