我希望能够将初始命令注入到交互式过程的启动中,以便可以执行以下操作:
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]会将输出发送到终端,而不是输入到进程,就像从终端输入一样
但是会有缺点:
发出一个派生孩子的命令,写入其标准输入,然后转发自己标准输入中的所有内容。缺点-终端控制功能(例如行模式与字符模式)将无法工作。也许我可以用伪终端代理做些什么?
使用命令行选项制作xterm的修改版本(无论如何我都会为此任务启动一个),以便在遇到所需的提示字符串后注入其他命令。丑陋。
修改我要运行的工具的版本,以便它在命令行上接受初始命令。中断标准安装。
(顺便说一下,当前感兴趣的工具是android的adb shell-我想在手机上打开一个交互式shell,自动运行命令,然后进行一个交互式会话)
您无需编写新的转发工具stdin-已经编写了一个工具(cat):
stdin
cat
(echo "initial command" && cat) | some_tool
确实有将管道连接到some_tool而不是终端的缺点。
some_tool