使用命令行捕获进程启动后的STDIN/STDERR/STDOUT?

Joh*_*der 8 linux bash putty output

谢谢!我的用户案例:我开始了一个冗长的交互式"配置"过程(比如在'屏幕'下),然后意识到我需要总是回答'不',直到我看到一个特定的关键字.手动执行此操作似乎浪费时间(并不是说我很容易错过关键字..)

因此,似乎我想将STDERR/STDOUT管道(副本)传递给过滤器,并且能够使用命令行注入(控制台)进程的STDIN,在它启动之后?有现成的解决方案吗?

以下工具似乎有所帮助.要捕获输出,请使用

strace -ewrite -p $PID
Run Code Online (Sandbox Code Playgroud)

这不是那么干净(显示如下行:写(#,)),但有效!但它是否说正确处理UTF8?

要重定向输出,请执行类似的操作

printf '..input..' >/dev/pts/33
Run Code Online (Sandbox Code Playgroud)

但目前尚不清楚如何找到合适的设备..

Joh*_*der 6

解决了Linux(显然是Linux特定的):

reptyr -s PID 
Run Code Online (Sandbox Code Playgroud)

将进程附加到另一个终端和/或将其输入和输出作为管道公开.