当前位置: 首页 > 面试题库 >

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

谭京
2023-03-14
问题内容

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

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):

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

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



 类似资料:
  • 问题内容: 我有要在Java程序中运行的rsync命令…我面临的问题是rsync需要输入密码,而我不了解如何将此密码传递给rsync命令才能工作? 问题答案: 我将发布此代码示例: 但是维尼特·雷诺兹领先于我。 正如Vineet Reynolds指出的那样,使用这种方法将需要另外一段代码来检测rsync何时需要密码。因此,使用外部密码文件似乎是一种更简单的方法。 PS:可能存在与编码有关的问题,可

  • 我正在尝试使用jdbcio.read在java beam中读取cloud SQL表。我想使用.WithRowMapper(Resultset Resultset)方法将Resultset中的每一行转换为GenericData.Record。是否有一种方法可以将JSON模式字符串作为输入传递给。WithRowMapper方法,如ParDo接受sideInputs作为PCollectionView

  • 本文向大家介绍iOS 然后初始化,包括了iOS 然后初始化的使用技巧和注意事项,需要的朋友参考一下 示例 这在语法上类似于使用位置常量进行初始化的示例,但是需要Thenhttps://github.com/devxoul/Then的扩展名(如下所示)。 该Then扩展:            

  • 问题内容: 在SQL Server 2014中,我试图创建一个动态的WHERE子句。 我已将查询构建为字符串,但是当我尝试使用sp_executesql执行查询时,出现以下错误:提示 13您必须声明标量变量“ @desde”。 我不知道如何使sp_executesql识别输入参数。 问题答案: 代替 使用 您必须定义在动态查询中使用的参数,例如 请参考sp_executesql 否则,您可以将动态

  • 我正在使用ProcessBuilder,使用Java从C程序输入和接收信息。在启动流程一次之后,我希望能够输入新字符串并接收它们的输出,而不必重新启动整个流程。这是我迄今为止采取的方法: 每次我想向正在运行的进程发送输入时,我都调用这个方法。然而,有一个问题:第一次我发送输入时,它很好,输出被完美地接收到。然而,第二次我调用它时,我收到了错误 这是出人意料的,因为当再次调用该方法时,理论上一切都会

  • 开头是我的jsp页面代码: 我想从