Bash脚本生成连接到同一屏幕会话的四个终端

时间:2012-09-16 23:48:41

标签: bash gnome gnu-screen

我正在尝试创建一个脚本来创建四个终端,每个终端运行自己的屏幕实例,向第一个发送bash命令(在我的示例中为顶部),然后将该会话链接到其他每个终端。请参阅帖子的结尾,了解我为什么要这样做。

无论如何,它几乎完全符合我的要求;我最终得到了四个终端,每个终端运行自己正确命名的屏幕实例,除最后一个终端之外的所有终端都链接到原始会话。但不是最后一个。所以这是代码,我希望有人可以告诉我为什么它没有按预期运行:

#!/bin/bash

for i in {1..4}
do
    gnome-terminal --window-with-profile=hdesk$i -e 'screen -S hdesk'$i
done

screen -XS hdesk1 stuff 'top^M'

for i in {2..4}
do
    screen -XS hdesk$i stuff 'screen -x hdesk1^M'
done

我尝试从终端逐行执行相同操作,而不是将其作为脚本运行,并且运行正常。出于某种原因,会话'hdesk4'虽然存在,却没有附加'hdesk1'。

至于为什么,我正在使用compiz,我希望这个终端是粘性的(存在于所有虚拟桌面上)。但我有两个四行的八个虚拟桌面,我不希望这个粘在顶行,只是底部,所以我不能只设置一个终端是粘性的。因此,任何达到这一目标但完全避免这种屏幕混乱的解决方案也会受到欢迎。

编辑:它现在有效,但我没有对代码或其他任何工作和工作之间的任何内容进行更改。刚刚暂停我的电脑并取消暂停。

1 个答案:

答案 0 :(得分:1)

我已经尝试了你的代码,想出了这个:

#!/bin/bash

for i in {1..4}
do
    gnome-terminal --window-with-profile=hdesk$i -e 'screen -S hdesk'$i
done

screen -XS hdesk1 stuff 'top^M'

for i in {2..4}
do
    screen -XS hdesk$i stuff 'screen -x hdesk1^M'
    sleep 1
done

我不知道为什么会这样,可能 screen拒绝附加太快?