将文件重定向到特定程序后返回“stdin”

Neo*_*Neo 8 linux bash shell redirection stdin

我需要使用bash的重定向工具来实现特定的效果。

我知道我可以将文件重定向到某个程序的标准输入:

[user@host]$ application < file.txt
Run Code Online (Sandbox Code Playgroud)

问题是,我想知道在将文件内容传递给该程序后,我能否重新获得对该程序输入的控制权。换句话说,我想运行一个类似于上面的命令,然后,我希望它等待来自标准输入(键盘)的进一步命令,而不是终止应用程序。

当我写这个问题时,我突然想到我可能会编写另一个应用程序(或脚本),首先将一些数据写入标准输出,然后充当回显,例如:

[user@host]$ stdin_proxy.sh | application
Run Code Online (Sandbox Code Playgroud)

它会起作用吗,有没有更好的方法来做到这一点?有一堆 Googleable 教程涵盖了这个问题,但它们都相当于一个建议——“在读取文件内容后重新打开标准输入”。然而,我无权访问application.

Ign*_*ams 9

cat 可以很容易地做到这一点。

cat file.txt - | application
Run Code Online (Sandbox Code Playgroud)

请注意,这不会使应用程序误以为它实际上已连接到终端;你会需要unbuffer的。