我希望能够将初始命令注入到交互式进程的启动中,这样我就可以执行以下操作:
echo "initial command" | INSERT_MAGIC_HERE some_tool
tool> initial command
[result of initial command]
tool> [now I type an interactive command]
什么不起作用:
仅仅通过管道传输初始命令是不起作用的,因为这会导致stdin没有连接到终端
写入/dev/pts/[number]会将输出发送到终端,而不是像从终端发送一样将输入发送到进程
但是有什么缺点呢
生成一个命令,该命令Forking 一个子 node ,写入它的stdin,然后转发它自己的stdin中的所有内容.缺点——终端控制功能(比如线模式和字符模式)无法工作.也许我可以用伪终端代理做点什么?
制作一个修改版的xterm(无论如何,我将为此任务启动一个),并使用命令行选项在遇到所需的提示字符串后注入其他命令.丑陋的
制作一个我试图运行的工具的修改版本,以便它接受命令行上的初始命令.打破了标准安装.
(顺便说一句,当前感兴趣的工具是android的adbshell ——我想在手机上打开一个交互式shell ,自动运行一个命令,然后进行一个交互式会话)