我希望能够在启动交互式进程时注入初始命令,以便我可以执行以下操作:
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]将输出发送到终端,而不是输入到进程,就像它来自终端一样
什么会有缺点:
>创建一个分叉子命令,写入stdin,然后转发自己的标准输入.下行 – 终端控制事物(如线与字符模式)不起作用.也许我可以用代理伪终端做些什么?
>使用命令行选项创建xterm的修改版本(我正在为此任务启动一个),以在遇到所需的提示字符串后注入其他命令.丑陋.
>创建我正在尝试运行的工具的修改版本,以便它在命令行上接受初始命令.打破标准安装.
(顺便提一下,当前感兴趣的工具是android的adb shell – 我想在手机上打开一个交互式shell,自动运行命令,然后进行交互式会话)
解决方法:
你不需要编写一个新的工具来转发stdin – 一个已经写好了(cat):
(echo "initial command" && cat) | some_tool
这确实具有将管道连接到some_tool而不是终端的缺点.
标签:linux,unix,pipe 来源: https://codeday.me/bug/20190918/1810813.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。