在this帖子Corey Henderson的回答中解释了如何使用屏幕上的at和stuff命令立即向屏幕会话的所有窗口发送命令。我想知道如何将输入缓冲区同时填充到某些窗口。换句话说,我想使用过滤器来指定哪些窗口应该接收输入,哪些不应该接收。
如果我可以过滤窗口号而不是用户名或窗口名,那将是很好的,因为bash有时会更改窗口名称,并且在多台机器上修改.bashrc很不方便。此外,有时我无法控制我正在运行命令的用户。
到目前为止,我只能在当前活动窗口或所有窗口上同时运行命令。
答案 0 :(得分:1)
使用at
命令时,我发现进行Windows过滤的唯一方法是使用Windows名称。
默认情况下,屏幕的窗口名称是在窗口中创建的程序的实际命令名称之后设置的,对我而言,通常为bash
。但是可以使用Ctrl+A将Windows名称更改为您喜欢的名称。如果您的窗口名称动态更改,请检查您是否未启用Dynamic Titles。
因此在实践中,这意味着您可以为相关窗口指定一个通用前缀,然后使用at "prefix#" stuff "command"
仅在名称与过滤器匹配的窗口上执行命令。
想象一下,我们在屏幕会话中打开了以下窗口:
0$ front1 - 1$ front2 - 2$ back1 - 3$ back2 - 4$ back3 - 5$ db1 - 6$ db2
下一条命令会将service ntpd stop
命令发送到以字符串 back 开头的Windows,即back1,back2,back3:
at "back#" stuff "service ntpd stop^M"