我有一个封闭的程序(即Intersystems的csession'Cachédb终端),它将写入作为参数给出的文件。它会多次这样做,然后返回。每次都会覆盖给定的文件,所以最后,我只得到最后的结果......
我认为有可能欺骗并提供一个特殊的伪文件作为参数,它将充当代理并将写入其中的内容附加到另一个文件中。
create proxyfile as >> realfile
cat "Hello" > proxyfile
cat "Bye" > proxyfile
cat realfile
Hello
Bye
有人认为这可能是可行的,可能使用一点实用工具吗?
答案 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
这不会覆盖,而是附加到现有文件。