Я знаю, как создавать несколько окон в течение одного сеанса экрана при запуске:
Но как только я их запускаю и запускаю, есть ли способ, которым мой вход может быть отправлен во все открытые окна, а не только в текущий момент?
Я знаю, как создавать несколько окон в течение одного сеанса экрана при запуске:
Но как только я их запускаю и запускаю, есть ли способ, которым мой вход может быть отправлен во все открытые окна, а не только в текущий момент?
Я нашел хороший учебник для этого:
Из сообщения:
Как только вы повторно используете несколько окон, вы можете столкнуться с ситуацией, когда вы хотите отправить одну и ту же команду нескольким из этих открытых окон. Экран обеспечивает команду "at" для этого. Сначала вам нужно открыть режим командной строки.
C-a: (двоеточие) Войдите в режим командной строки.
Таким образом вы можете ввести команду один раз, но вам все равно придется вводить каждое отдельное окно. Но есть лучший способ. В качестве примера мы отправим "ls -l" во все окна.
в элементе "#" "ls -l ^ M"
Эта команда едва читаема, поэтому отпустите ее! Первая часть - 'at [identifier] [# | * |%] command'. Команда at отправляет текстовый параметр во все окна, указанные вами в идентификаторе. Вы можете сопоставить критерии с именем окна или номером С#, именем пользователя с * или дисплеями, используя%. Следующая часть - это команда, которую вы хотите запустить в выбранных окнах. Использовали "материал" для заполнения команды, которую мы хотим выполнить, в буфер ввода выбранных окон. Материал действительно прост. Он просто заполняет строку, которую вы дали в качестве параметра. Следующая проблема - это команда. Или, скорее, это выполнено! Чтобы получить экран для ввода "enter" после команды, для выполнения команды добавьте "^ M" в конце. Вы можете сделать намного больше, чем просто отправить ls на вход. Любая команда экрана, например переименование, перемещение окон вокруг, то, что.. доступно в сочетании с "at".
Извините за этот запоздалый ответ, но tmux
может быть лучшим выбором для вас, чем screen
. В tmux
вам нужно нажать: C-b :
, чтобы войти в командный режим и ввести: setw synchronize-panes
(или просто setw sync<Tab>
с использованием автозаполнения). Обратите внимание, что эта команда включает синхронизацию между панелями (области одного разделенного экрана, видимые одновременно), но не между окнами (полный, не разделенный, экраны).
Вы также можете отправить только выбранные окна (многоадресная рассылка).
Установите заголовки по мере необходимости.
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).
Вы можете включить/отключить многоадресную рассылку на основе заголовка окна таким образом.