如何在bash中创建附加到另一个文件的伪文件

时间:2012-11-26 14:45:35

标签: linux bash shell

我有一个封闭的程序(即Intersystems的csession'Cachédb终端),它将写入作为参数给出的文件。它会多次这样做,然后返回。每次都会覆盖给定的文件,所以最后,我只得到最后的结果......

我认为有可能欺骗并提供一个特殊的伪文件作为参数,它将充当代理并将写入其中的内容附加到另一个文件中。

create proxyfile as >> realfile
cat "Hello" > proxyfile
cat "Bye" > proxyfile
cat realfile
Hello
Bye

有人认为这可能是可行的,可能使用一点实用工具吗?

2 个答案:

答案 0 :(得分:4)

您可以使用FIFO文件(命名管道)来实现此目的。要了解它们的工作原理,请打开两个终端窗口。在其中一个,做

cd /tmp
mkfifo pipe
tail -f pipe

和另一个

cd /tmp
echo "Hello" > pipe
echo "Bye" > pipe

对于实际问题,让您的应用程序写入FIFO并在后台使用tail -f pipe > outputfile将结果收集到outputfile

答案 1 :(得分:1)

您可以使用/dev/stdout作为输出文件,将其传递给cat并将标准输出附加到>>

的文件中
csession /dev/stdout | cat >>realfile

这不会覆盖,而是附加到现有文件。