Każdy panel tmux jest interfejsem dla pojedynczego pty (pseudo tty). Okna nierozdzielone mają jeden panel; podzielone okna mają wiele okien.
tmux nie zapewnia sposobu dodawania dodatkowych procesów do panelu po uruchomieniu za pomocą początkowej komendy. Proces pierwszego polecenia (zwykle powłoka) należy do sterowania zadaniem 1 dla tego terminala.
Jeśli chcesz zablokować to, co aktualnie jest uruchomione w panelu, możesz użyć respawn-pane -k
do zabicia istniejącego polecenia i zastąpienia go nowym (np respawn-pane -t sessionname:0.4 -k 'some -new command'
.).
Ale jeśli chcesz zachować wszystko, co aktualnie działa w okienku, może nie być lepszej opcji niż zwykłe „pisanie na nim” send-keys
.
Możesz wykonać skrypt w ten sposób (dołącz ostatni, ponieważ w przeciwnym razie skrypt będzie czekał na odłączenie przed kontynuowaniem):
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"
Zauważ, że w send-keys
poleceniu powinieneś tak naprawdę wpisać litery
E n t e r, aby powiedzieć, tmux
aby wysłać klawisz nowej linii do okna. (Oczywiście każde polecenie kończy się na Enterklawiszu.)
1 Kontrola zadań to arbitraż między wieloma grupami procesów w jednej sesji, w której terminal tty jest kontrolerem. Czyli Ctrl+ Zzawiesić klucz, i jobs
, fg
i bg
powłoki poleceń.
#{session_name}:#{window_index}.#{pane_index}
w moim wierszu stanu, więc można szybko sprawdzić, które szyba do wysyłania poleceń do.Możesz użyć
C-m
zamiastEnter
. To jest to samo. Ponadtotmux
ułatwia wysyłanie do prawego / lewego panelu za pomocą-t right
lub-t left
. A jeśli chcesz zaadresować panel w innym oknie, po prostu poprzedz go numerem i kropką okna, na przykład-t 0.right
.Teraz możesz napisać prostą funkcję Bash, aby uzyskać sekwencję kluczy jako argument i łatwo wysłać ją do panelu docelowego.
źródło