使任何二进制文件接受标准输入/标准输出重定向的 Unix 包装器

Jon*_*ark 2 unix command-line-interface stdin stdout

这是一种常见情况:您希望将命令 'foo' 作为管道的一部分包含在内,但不幸的是,命令 'foo' 只接受 I/O 的实际文件名,并且不从 stdin/stdout 读/写。我知道有一个 Unix 命令可以作为诸如“foo”之类的错误命令的包装器,但我不记得它的名字。它是什么?

jll*_*gre 5

假设foo使用-i其输入文件和-o用于其输出之一,这应该将其转换为适合于管道的程序:

previousCommand | foo -i <(cat) -o >(cat) | nextCommand
Run Code Online (Sandbox Code Playgroud)

这称为进程替换,虽然不是标准的,但至少可用于 ksh 和 bash。

在像前面的例子这样的简单情况下,可以像这样减少管道:

foo -i <(previousCommand) -o >(nextCommand)
Run Code Online (Sandbox Code Playgroud)