Подтвердить что ты не робот

В Экран, как мне отправить команду во все окна виртуального терминала в течение одного сеанса экрана?

Я знаю, как создавать несколько окон в течение одного сеанса экрана при запуске:

Но как только я их запускаю и запускаю, есть ли способ, которым мой вход может быть отправлен во все открытые окна, а не только в текущий момент?

4b9b3361

Ответ 1

Я нашел хороший учебник для этого:

http://blog.cone.be/2009/11/24/gnu-screen-nethack-different-screen-windows-sending-commands-to-all-screen-windows/

Из сообщения:

Как только вы повторно используете несколько окон, вы можете столкнуться с ситуацией, когда вы хотите отправить одну и ту же команду нескольким из этих открытых окон. Экран обеспечивает команду "at" для этого. Сначала вам нужно открыть режим командной строки.

C-a: (двоеточие) Войдите в режим командной строки.

Таким образом вы можете ввести команду один раз, но вам все равно придется вводить каждое отдельное окно. Но есть лучший способ. В качестве примера мы отправим "ls -l" во все окна.

в элементе "#" "ls -l ^ M"

Эта команда едва читаема, поэтому отпустите ее! Первая часть - 'at [identifier] [# | * |%] command'. Команда at отправляет текстовый параметр во все окна, указанные вами в идентификаторе. Вы можете сопоставить критерии с именем окна или номером С#, именем пользователя с * или дисплеями, используя%. Следующая часть - это команда, которую вы хотите запустить в выбранных окнах. Использовали "материал" для заполнения команды, которую мы хотим выполнить, в буфер ввода выбранных окон. Материал действительно прост. Он просто заполняет строку, которую вы дали в качестве параметра. Следующая проблема - это команда. Или, скорее, это выполнено! Чтобы получить экран для ввода "enter" после команды, для выполнения команды добавьте "^ M" в конце. Вы можете сделать намного больше, чем просто отправить ls на вход. Любая команда экрана, например переименование, перемещение окон вокруг, то, что.. доступно в сочетании с "at".

Ответ 2

Извините за этот запоздалый ответ, но tmux может быть лучшим выбором для вас, чем screen. В tmux вам нужно нажать: C-b :, чтобы войти в командный режим и ввести: setw synchronize-panes (или просто setw sync<Tab> с использованием автозаполнения). Обратите внимание, что эта команда включает синхронизацию между панелями (области одного разделенного экрана, видимые одновременно), но не между окнами (полный, не разделенный, экраны).

Ответ 3

Вы также можете отправить только выбранные окна (многоадресная рассылка).

  • Конвенция. Дайте 1-му символу заголовка окна значение широковещательного флага. Например. если название начинается с "." то окно прослушивает трансляцию, иначе это не так.
  • Установите заголовки по мере необходимости.

    screen -S SessionName -p 0 -X title "remote_0"     # window 0: ignore multicast
    screen -S SessionName -p 1 -X title ".remote_1"    # window 1: listen to multicast
    
  • Отправить содержимое слушателям с помощью команды на экране

    screen -S SessionName -X at ".#" stuff "date
    "
    
  • Примечание: приведенная выше двойная кавычка обеспечивает отправку ^ M (Cr).

  • Вы можете включить/отключить многоадресную рассылку на основе заголовка окна таким образом.