2012-05-15 96 views
6

我有一個屏幕會話運行幾個窗口。我想附加它,在其中創建一個新的屏幕窗口並在該新窗口中啓動一個shell。附加到「屏幕」會話與創建一個新的屏幕窗口

問題:如何從屏幕會話之外的命令行執行此操作?

我已經嘗試了很多, G。 screen -x(但它附加到現有屏幕窗口中的一個;它不會創建新窗口,也不會啓動新的外殼)。任何提示都是值得歡迎的。

環境是Linux(Ubuntu 12.04)。

+0

好像有這樣做的標準方式。您可以在[郵件列表](http://lists.gnu.org/archive/html/screen-users/) – tuxuday

+0

中搜索,我會接受這個答案,因爲我在那裏找到了一些東西,謝謝! :) – Alfe

+0

@Alfe如果你找到了正確的答案,請自行發佈。如果這是一個正確的答案,你可以在一段時間後接受你自己的答案。除了我很好奇:P – KurzedMetal

回答

6

我發現在郵件列表上的東西,謝謝:) tuxuday

我這樣做,現在這樣說:

#!/bin/bash 
screen -X screen -t NEWWINDOW # create new window (switches existing attached terminal) 
sleep 0.1 
screen -X other # switch existing attached terminal back to its old window 
sleep 0.1 
gnome-terminal -e 'screen -x -p NEWWINDOW' # connect to new window 

我不知道那些睡覺,也許他們不是活得在所有環境中都是必要的,但我可以輕鬆地等待0.2秒。

我的.bash_aliases正在改變屏幕窗口的標題,所以尷尬的NEWWINDOW不會堅持很長時間(並且因此不妨礙對該腳本的進一步調用)。

+2

我從郵件列表中獲得的訣竅是'screen -X other'。 – Alfe

+1

看看這個[博客條目](https://rohieb.wordpress.com/2010/07/30/gnu-screen-start-with-multiple-windows-and-commands/)。它建議使用一個會話命令文件(只是一個包含'screen','select'和'other'的所有命令的文件)並運行'screen -X source sessionfile'而不是多次調用'screen -X'。好方法 – KurzedMetal

+0

我打電話給'screen -X'只是兩次......但是如果那個腳本增長的話,會話命令文件的方法值得看一看:) – Alfe

3

添加新的分開的窗口,以sesion_name和運行command

screen -S sesion_name -x -X screen bash -c 'command; exec bash' 
2

要選擇一個窗口加入,使用-p選項。給予+將創造一個新的,所以你的命令很簡單:

screen -x session_name -p + 

這是記錄在手冊頁:

-pn ̲ü̲米̲ b ̲Ë̲ [R ̲ _o ̲ r ̲ _n ̲ a ̲ m ̲ e ̲ | ̲ - ̲ | ̲ = ̲ | ̲ + ̲

Preselect a window. This is useful when you want to reattach to a 
specific windor or you want to send a command via the "-X" option 
to a specific window. As with screen's select commant, "-" selects 
the blank window. As a special case for reattach, "=" brings up the 
windowlist on the blank window. 
+0

我再次查看了我的手冊頁(版本4.00.03jw4),發現只有'-p number_or_name'(不是'| - | = | +')。然後我看了一個稍微更新的版本(4.01.00devel)並找到了你的劇情簡介。令人困惑的是,你粘貼的文本來自舊手冊頁(沒有描述「+」),而我的測試中的新手冊頁有這個額外的文本描述了「+」:「...而」+「將創建一個新的窗口。如果找不到指定的窗口,命令將不會被執行。所以這是一個新選項!感謝您指出這一點,我認爲它解決了我的問題。 – Alfe