Chaque volet tmux est une interface pour un seul pty (pseudo tty). Les fenêtres non divisées ont un seul volet; Les fenêtres divisées ont plusieurs volets.
tmux ne fournit pas de moyen d'ajouter des processus supplémentaires à un volet une fois qu'il a été démarré avec sa commande initiale. Il appartient au processus de cette commande initiale (généralement un shell) de fournir le contrôle de tâche 1 pour ce terminal.
Si vous souhaitez masquer tout ce qui est en cours d'exécution dans le volet, vous pouvez utiliser respawn-pane -k
pour supprimer la commande existante et la remplacer par une nouvelle (par exemple, respawn-pane -t sessionname:0.4 -k 'some -new command'
).
Toutefois, si vous souhaitez conserver tout ce qui est en cours d’exécution dans le volet, il n’y aura peut-être pas de meilleure option que de simplement «taper dessus» avec send-keys
.
Vous pouvez écrire le script comme ceci (attachez-le en dernier, car sinon le script attendra que vous vous détachiez avant de continuer):
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"
Notez que, sur la send-keys
commande, vous devez réellement taper les lettres
E n t e r, pour indiquer qu’il tmux
faut envoyer une touche de nouvelle ligne à la fenêtre. (Naturellement, chaque commande se termine par la Enterclé.)
1 Le contrôle de tâche est l'arbitrage entre plusieurs groupes de processus d'une même session utilisant le terminal de contrôle comme terminal de contrôle. -À- dire, la Ctrl+ Ztouche de suspension, et les jobs
, fg
et les bg
commandes shell.
#{session_name}:#{window_index}.#{pane_index}
dans ma ligne d'état afin de pouvoir rapidement voir à quel volet envoyer des commandes.Vous pouvez utiliser
C-m
au lieu deEnter
. C'est la même chose. En outre,tmux
il est facile d'envoyer dans le volet droite / gauche en utilisant-t right
ou-t left
. Et si vous souhaitez adresser un volet dans une autre fenêtre, il suffit de le préfixer avec le numéro de la fenêtre et le point, par exemple-t 0.right
.Vous pouvez maintenant écrire une simple fonction Bash pour obtenir la séquence de clés en argument et l'envoyer facilement au volet cible.
la source