在屏幕会话中,我想运行一个打开的shell脚本 在同一个会话中的几个新的屏幕窗口,并开始运行一些 其中的程序。
我需要一个这样的脚本:
screen -t newWindow
[switch to newWindow and execute a command]
screen -t newWindow2
[switch to newWindow2 and execute a command]
我不知道如何完成我在括号中描述的效果。 有线索吗?请注意,这不是我将运行启动屏幕会话的脚本。我需要这个脚本在现有的屏幕会话中可以运行,以便为会话添加新的窗口。
答案 0 :(得分:3)
注意:您无法从屏幕会话中按照以下方式启动脚本。它会在会议中打开没有标签...它更像是一个相关的提示,而不是对问题的真实答案。
如果您通过运行流程接受屏幕会话,还有另一种解决方案......
新会话脚本
#!/bin/sh
echo "nouvelle session screen ${sessionName}"
screen -S ${sessionName} init.sh
echo "screen session: done"
echo "go to ${AnyWhere}"
sleep 1
screenexec ${sessionName} "cd ${AnyWhere}"
init脚本(此处为“init.sh”)
#!/bin/zsh
zsh -c "sleep 0.2"
screen -d #detach the initialised screen
zsh #let a prompt running
注射脚本(此处为screenexec)
#!/bin/sh
# $1 -> nom de screen cible $2 -> commande
echo "injection de «${2}» dans la session «${1}» ..."
screen -x "$1" -X stuff "$2" #inject the command
screen -x "$1" -X eval "stuff \015" #inject \n
echo "Done"
通过这种方式,你应该在你的屏幕上轻松地注入代码,如果你的脚本就像一个守护者那么有趣......
对于那些喜欢python脚本的人,我创建了一个小型lib来创建会话,关闭会话,注入命令:ScreenUtils.py
这是一个小项目,不处理多窗口屏幕会话。
忘了提到我很久以前就用它制作了一个真正的python库:https://github.com/Christophe31/screenutils
答案 1 :(得分:1)
在屏幕内运行此脚本可以实现我想要的功能:
#!/bin/bash
screen vi
screen top