Отправить команду во все окна в tmux

Это способ отправить одну и ту же команду во все окна в tmux, а не во все панели в окне. synchronize-panes - отправить команду на все панели в одном окне. Мне нужно что-то вроде «at» на экране.


person vorand    schedule 12.02.2012    source источник


Ответы (2)


Вы всегда можете сделать что-то вроде этого:

session=mysession
message="hello world"
tmux list-windows -t $session|cut -d: -f1|xargs -I{} tmux send-keys -t $session:{} $message

Вы также можете привязать это к ключу в вашем tmux.conf следующим образом:

bind C-e command-prompt -p "session?,message?" "run-shell \"tmux list-windows -t %1 \| cut -d: -f1\|xargs -I\{\} tmux send-keys -t %1:\{\} %2\""
person Alex Gaudio    schedule 06.05.2012
comment
Это здорово - небольшое дополнение. Я хотел сделать то же самое, но отправить один и тот же вывод на все панели в каждом окне. Легко сделать с настройкой synchronize-panes! - person dsummersl; 01.02.2013
comment
Вы также можете получить текущую сессию командой: tmux display -p "#S" - person NgaNguyenDuy; 25.07.2016
comment
Если вы действительно хотите выполнить команду, добавьте Enter к приведенной выше команде. Но тогда он удалит пробелы в сообщении. Вы можете создать такую ​​функцию для работы с этими точками: function keys { tmux list-windows -t $session|cut -d: -f1|xargs -I{} tmux send-keys -t $session:{} "$@" Enter}. См. этот вопрос и этот вопрос соответственно, чтобы узнать больше. Но приведенное ниже решение github более тщательное! - person Blue Raspberry; 01.11.2018

Вы можете сделать что-то вроде этого: https://gist.github.com/2773454

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

Все зависит от того, чего вы пытаетесь достичь, например, то, что я хочу сделать, - это источник ~/.zsh во всех панелях.

person DebugXYZ    schedule 23.05.2012
comment
Я больше не могу получить доступ к этой ссылке - есть ли новая? - person Blue Raspberry; 03.11.2020