GNU Screen向指定范围窗口发命令失败,求多范围实现方案
GNU Screen 多窗口批量发送命令问题解决
一、修复单范围命令不生效的问题
你原命令at '2-10#' stuff "command^m"无效的核心原因是窗口范围语法错误,正确写法需去掉范围后的#,同时确保换行符输入正确:
- 交互式会话内操作:用
^V^M输入实际回车符(先按Ctrl+V,再按Ctrl+M)at 2-10 stuff "command^V^M" - 脚本/外部调用场景:用
\n代替换行符(需用双引号包裹)
或结合screen -X at 2-10 stuff "command\n"printf生成带换行的命令:printf 'command\n' | screen -X at 2-10 stuff -
二、实现多组范围窗口发送命令
Screen的at命令支持用逗号分隔多个窗口范围或单个窗口编号,直接指定多组范围即可:
示例:向2-4、8-9号窗口发送命令
- 交互式会话内输入:
at 2-4,8-9 stuff "command^V^M" - 脚本/外部调用场景:
或结合screen -X at 2-4,8-9 stuff "command\n"printf:printf 'your_command_here\n' | screen -X at 2-4,8-9 stuff -
补充说明
- 可通过
screen -list或会话内按Ctrl+A "查看所有窗口的编号和名称。 - 若要向除当前窗口外的所有窗口发命令,用
at all stuff "command\n";排除特定窗口(如1号)则用at all but 1 stuff "command\n"。
内容的提问来源于stack exchange,提问作者hoffmeister
相关产品推荐
相关产品推荐

