如何在屏幕会话中编写gnu屏幕脚本以打开新窗口并在其中运行命令?

时间:2010-01-28 16:55:16

标签: gnu-screen unix

在屏幕会话中,我想运行一个打开的shell脚本 在同一个会话中的几个新的屏幕窗口,并开始运行一些 其中的程序。

我需要一个这样的脚本:

screen -t newWindow
[switch to newWindow and execute a command]
screen -t newWindow2
[switch to newWindow2 and execute a command]

我不知道如何完成我在括号中描述的效果。 有线索吗?请注意,这不是我将运行启动屏幕会话的脚本。我需要这个脚本在现有的屏幕会话中可以运行,以便为会话添加新的窗口。

2 个答案:

答案 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