Каждая панель 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 приостанавливается, и команды shell jobs
, fg
и bg
.