![将一些输入发送到进程中,然后从命令行恢复输入](https://linux22.com/image/21533/%E5%B0%86%E4%B8%80%E4%BA%9B%E8%BE%93%E5%85%A5%E5%8F%91%E9%80%81%E5%88%B0%E8%BF%9B%E7%A8%8B%E4%B8%AD%EF%BC%8C%E7%84%B6%E5%90%8E%E4%BB%8E%E5%91%BD%E4%BB%A4%E8%A1%8C%E6%81%A2%E5%A4%8D%E8%BE%93%E5%85%A5.png)
我有一个交互式终端程序,它接受标准输入(例如telnet)。
我想在与它交互之前向它发送一些输入,如下所示:
echo "Hello" | telnet somewhere 123
但这只会发送Hello
并随后终止 telnet。如何保持 telnet 处于活动状态并将输入路由到其中?
答案1
启动后,您无法更改 telnet 的 STDIN 所绑定的内容,但您可以将简单的 echo 替换为执行多个操作的内容 - 并让第二个操作为“将用户输入复制到目标”:
{ echo "hello"; cat; } | telnet somewhere 123
当然,您可以将 cat 替换为将从用户复制并发送到 telnet 的任何内容。
请记住,这仍然与仅在流程中键入内容不同。您已将管道连接到 STDIN,而不是 TTY/PTY,因此 telnet 将无法隐藏您输入的密码。