Ho un programma chiuso (vale a dire Intersystems"csession" Cachédb terminal) che scriverà in un file indicato come parametro. Lo fa più volte, come poi ritorna. Ogni volta, il file dato viene sovrascritto, quindi alla fine ottengo solo l'ultimo risultato ...
Ho avuto l'idea che potesse essere possibile ingannare e dare uno speciale pseudo-file come parametro, che fungesse da proxy e aggiungesse ciò che è scritto in esso in un altro file.
create proxyfile as >> realfile
cat "Hello" > proxyfile
cat "Bye" > proxyfile
cat realfile
Hello
Bye
Qualcuno pensa che questo potrebbe essere fattibile, magari usando una piccola utility?
risposte:
4 per risposta № 1A tale scopo è possibile utilizzare un file FIFO (denominato pipe). Per vedere come funzionano, apri due finestre del terminale. In uno, fallo
cd /tmp
mkfifo pipe
tail -f pipe
e nell'altro
cd /tmp
echo "Hello" > pipe
echo "Bye" > pipe
Per il problema reale, lascia che l'applicazione scriva su FIFO e utilizzi tail -f pipe > outputfile
sullo sfondo in cui raccogliere i risultati outputfile
.
1 per risposta № 2
Puoi usare /dev/stdout
come file di output, reindirizzalo a cat e aggiungi lo standard output a un file con >>
csession /dev/stdout | cat >>realfile
Questo non sovrascriverà, ma aggiungerà al file esistente.