Não tenho certeza de como um arquivo está envolvido no seu cenário. entrada padrão canalizada pode ser lida em um arquivo temporário (ou mantido na memória) e então o acesso tty restaurado através de algo como
#!/usr/bin/env expect
package require Tcl 8.5
package require fileutil
set tmpfile [::fileutil::tempfile]
while {[gets stdin line] >= 0} {
puts $tmpfh $line
}
close stdin
open /dev/tty r+
# and here the remainder of the program can interact with the terminal,
# and read from the $tmpfile as necessary
Eu uso esse método para feed
entrada padrão no REPL e, em seguida, ligo esse REPL para uso interativo:
$ echo '(print "hello")' | feed - sbcl --noinform
* (print "hello")
"hello"
"hello"
* (quit)
(quit)
$