2

我正在尝试编写一个脚本来创建四个终端,每个终端都运行自己的屏幕实例,向第一个发送 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,并且我希望这个终端具有粘性(存在于所有虚拟桌面上)。但是我在两排四个中有八个虚拟桌面,我不希望在最上面一行粘贴,只是在底部,所以我不能只将单个终端设置为粘性。因此,任何实现该目标但完全避免这种屏幕混乱的解决方案也将受到欢迎。

编辑:它现在可以工作了,尽管我没有对代码或在不工作和工作之间的任何其他内容进行任何更改。刚刚暂停了我的电脑一夜之间并没有暂停。

4

1 回答 1

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拒绝连接太快?

于 2012-09-17T05:52:38.903 回答