tee
通过从标准输入读取并将输入流拆分为标准输出和文件来工作。
我正在尝试对进程的标准输入做类似的事情。我希望命令的标准输入仍然附加到 tty 或伪终端,并且还能够从任意源接收输入,比如文件。
我尝试了各种管道技巧和 IO 重定向,但无法复制将 stdin 视为终端的程序所需的场景。
这可能是不可能的,但我想我会问。
tee
通过从标准输入读取并将输入流拆分为标准输出和文件来工作。
我正在尝试对进程的标准输入做类似的事情。我希望命令的标准输入仍然附加到 tty 或伪终端,并且还能够从任意源接收输入,比如文件。
我尝试了各种管道技巧和 IO 重定向,但无法复制将 stdin 视为终端的程序所需的场景。
这可能是不可能的,但我想我会问。
您可以编写一个调用
select()
tty 和其他一些源的程序,读取来自任一源的任何内容。但是如果另一个源是文件,那没有任何意义:文件总是可以立即读取,无需等待输入。所以结果将是您要么先处理文件,然后处理 tty 输入,要么反之。(除非文件非常大,并且您实际上需要等待磁盘一段时间。)要先读取文件,然后再读取 tty 输入/标准输入,您可以使用
cat file -
.我不确定您的方案中如何涉及文件;管道标准输入可以读入临时文件(或保存在内存中),然后通过类似的方式恢复 tty 访问
我使用这种方法将
feed
标准输入输入到 REPL,然后将该 REPL 转为交互式使用: