Jeder TMUX-Bereich ist eine Schnittstelle für eine einzelne Pty (Pseudotty). Nicht geteilte Fenster haben einen einzelnen Bereich. Geteilte Fenster haben mehrere Fenster.
tmux bietet keine Möglichkeit, einem Fenster zusätzliche Prozesse hinzuzufügen, nachdem es mit seinem anfänglichen Befehl gestartet wurde. Es liegt an dem Prozess dieses anfänglichen Befehls (normalerweise eine Shell), die Jobsteuerung 1 für dieses Terminal bereitzustellen.
Wenn Sie das, was gerade im Bereich ausgeführt wird, blockieren möchten, können Sie respawn-pane -k
den vorhandenen Befehl beenden und durch einen neuen ersetzen (z respawn-pane -t sessionname:0.4 -k 'some -new command'
. B. ).
Wenn Sie jedoch das, was gerade im Bereich ausgeführt wird, beibehalten möchten, gibt es möglicherweise keine bessere Option, als einfach "daran zu tippen" send-keys
.
Sie können das Skript folgendermaßen erstellen (zuletzt anhängen, da das Skript ansonsten nur darauf wartet, dass Sie die Verbindung trennen, bevor Sie fortfahren):
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"
Beachten Sie, dass auf dem send-keys
Befehl, sollten Sie die Buchstaben tatsächlich geben
E n t e r, zu sagen , tmux
eine neue Zeile Schlüssel zum Fenster zu senden. (Natürlich endet jeder Befehl mit der EnterTaste.)
1 Jobsteuerung ist die Entscheidung zwischen mehreren Prozessgruppen einer einzelnen Sitzung, die das tty als steuerndes Terminal verwendet. Dh die Ctrl+ Zsuspendieren Schlüssel, und die jobs
, fg
und bg
Shell - Befehlen.
#{session_name}:#{window_index}.#{pane_index}
meine Statuszeile eingegeben, damit ich schnell sehen kann, an welchen Bereich Befehle gesendet werden sollen.Sie können
C-m
anstelle von verwendenEnter
. Das ist gleich. Auchtmux
macht es leicht nach rechts / links Bereich zu senden , indem Sie mit-t right
oder-t left
. Wenn Sie einen Bereich in einem anderen Fenster ansprechen möchten, müssen Sie ihm lediglich die Fensternummer und den Punkt voranstellen-t 0.right
.Jetzt können Sie eine einfache Bash-Funktion schreiben, um die Tastenfolge als Argument abzurufen und sie einfach an das Zielfenster zu senden.
quelle