2012-05-15 13 views
6

У меня сеанс экрана, состоящий из нескольких окон. Я хочу подключиться к нему, создать в нем новое экранное окно и запустить оболочку в этом новом окне.Присоединитесь к сеансу 'screen' с созданием нового окна экрана

Вопрос: Как это сделать из командной строки за пределами сеанса экрана?

Я уже много пробовал, д. г. 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 

я не уверен, о тех снах, может быть, они Арен» t необходимо во всех средах, но я могу легко подождать эти 0.2s.

My .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 ̲ ̲ у м ̲ б ̲ е ̲ г ̲ _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

Я снова посмотрел на свою manpage (версия 4.00.03jw4) и нашел только '-p number_or_name' (а не' | - | = | + '). Затем я посмотрел несколько более новую версию (4.01.00devel) и нашел вашу синопсис. Сбивание с толку состоит в том, что текст, который вы вставляли, поступает со страницы старшего пользователя (ничего не описывая о '+'), в то время как более новая manpage в моих тестах имела этот дополнительный текст, описывающий '+': '..., в то время как« + »создаст новый окно. Команда не будет выполнена, если указанное окно не может быть найдено. «Итак, это новый вариант! Спасибо, что указали это, я думаю, что это решает мою проблему. – Alfe