如何通过键盘命令启动UNIX Screen并执行分窗切换操作?
答:当然可以用一行命令搞定!
你完全可以通过Screen的命令行参数或者脚本实现启动会话+拆分窗口+切换的一站式操作,下面给你两种最实用的方案:
方案一:直接用Screen内置命令行参数(推荐)
Screen支持通过-X选项向指定会话发送命令,我们可以先后台启动会话,再发送拆分和切换命令,最后连接会话,一行搞定:
screen -dmS my_session && screen -S my_session -X split -h && screen -S my_session -X next && screen -r my_session
解释一下每个部分:
screen -dmS my_session:后台启动名为my_session的Screen会话(d=后台运行,m=强制创建新会话,S=指定会话名)screen -S my_session -X split -h:向该会话发送水平拆分窗口命令(对应你说的Ctrl+a S;如果要垂直拆分,把-h换成-v,对应Ctrl+a |)screen -S my_session -X next:发送切换到下一个窗口的命令(对应Ctrl+a n,会切换到拆分出来的底部窗口)screen -r my_session:连接到这个配置好的会话
如果不需要指定会话名,也可以简化成:
screen -dm && screen -X split -h && screen -X next && screen -r
方案二:用Expect脚本模拟按键操作
如果你更习惯模拟手动按键的逻辑,可以用expect工具(大部分Linux发行版默认安装)写一个简单脚本:
#!/usr/bin/expect # 启动Screen会话 spawn screen # 发送Ctrl+a S(\001代表Ctrl+a) send "\001S" # 发送Ctrl+a n切换窗口 send "\001n" # 保持交互状态,让你能直接操作会话 interact
把这段代码保存为start_screen.sh,然后给它加执行权限:
chmod +x start_screen.sh
之后运行./start_screen.sh就能自动完成你要的操作了。
补充小提示
- 如果你经常用这个操作,可以把命令加到
~/.bashrc或者~/.zshrc里做成别名,比如:
之后输入alias screen_split='screen -dmS my_split && screen -S my_split -X split -h && screen -S my_split -X next && screen -r my_split'screen_split就能一键执行。 - 可以用
screen -X help查看所有支持的命令,比手动记快捷键更方便!
内容的提问来源于stack exchange,提问作者Tristan Schuler
相关产品推荐
相关产品推荐

