Каждая панель tmux является интерфейсом для одного pty (pseudo tty). Не разделенные окна имеют одну панель; разделенные окна имеют несколько панелей.
tmux не предоставляет способ добавления дополнительных процессов в панель после запуска ее начальной командой. Это зависит от процесса этой начальной команды (обычно от оболочки), чтобы обеспечить управление заданием 1 для этого терминала.
Если вы хотите перекрыть все, что в данный момент выполняется на панели, вы можете использовать, respawn-pane -k
чтобы убить существующую команду и заменить ее новой (например, respawn-pane -t sessionname:0.4 -k 'some -new command'
).
Но, если вы хотите сохранить то, что в данный момент выполняется на панели, то, возможно, не найдется лучшего варианта, чем просто «набрать текст» с помощью send-keys
.
Вы можете написать его так (присоедините последний, потому что в противном случае скрипт просто подождет, пока вы отсоединитесь, прежде чем продолжить):
session=whatever
window=${session}:0
pane=${window}.4
tmux send-keys -t "$pane" C-z 'some -new command' Enter
tmux select-pane -t "$pane"
tmux select-window -t "$window"
tmux attach-session -t "$session"
Обратите внимание, что в send-keys
команде вы должны ввести буквы
E n t e r, tmux
чтобы отправить ключ новой строки в окно. (Естественно, каждая команда заканчивается Enterключом.)
1 Управление заданиями - это арбитраж между несколькими группами процессов одного сеанса, который использует tty в качестве управляющего терминала. Т.е., Ctrl+ Zприостановить ключ, и jobs
, fg
и bg
команды оболочки.
#{session_name}:#{window_index}.#{pane_index}
в свою строку состояния, чтобы я мог быстро увидеть, на какую панель отправлять команды.Вы можете использовать
C-m
вместоEnter
. Это то же самое. Кроме того,tmux
позволяет легко отправлять на правую / левую панель с помощью-t right
или-t left
. И если вы хотите обратиться к панели в другом окне, просто добавьте к ней номер окна и период, например-t 0.right
.Теперь вы можете написать простую функцию Bash, чтобы получить последовательность ключей в качестве аргумента и легко отправить ее на целевую панель.
источник