小编典典

我如何将初始输入传递到流程中,然后才能进行交互?

linux

我希望能够将初始命令注入到交互式过程的启动中,以便可以执行以下操作:

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,自动运行命令,然后进行一个交互式会话)


阅读 315

收藏
2020-06-02

共1个答案

小编典典

您无需编写新的转发工具stdin-已经编写了一个工具(cat):

(echo "initial command" && cat) | some_tool

确实有将管道连接到some_tool而不是终端的缺点。

2020-06-02