这是一个常见的情况:你想包含命令'foo'作为pipe道的一部分,但不幸的是命令'foo'只接受I / O的实际文件名,不能从stdin / stdout读/写。 我知道有一个Unix命令可以作为'foo'等错误命令的包装,但是我不记得它的名字。 它是什么?
假设foo使用-i作为input文件,使用-o作为输出文件,这应该将其转换为适合pipe道的程序:
previousCommand | foo -i <(cat) -o >(cat) | nextCommand
这称为进程replace,虽然不是标准的,但至less可以同时使用ksh和bash。
在前面例子的简单情况下,pipe道可以像这样缩小:
foo -i <(previousCommand) -o >(nextCommand)
我想你想要mkfifo ,它可以创build像文件一样的命名pipe道。
例:
mkfifo mypipe perl mypipe & # awaits input from pipe file echo "print 55;" > mypipe ls -l mypipe # should be prefixed with ap denoting the inode is a pipe: prw-r--r-- 1 user1 user1 0 Apr 18 12:10 mypipe