Chaque tmux panneau est une interface pour un seul pty (pseudo tty). Les fenêtres non divisées ont un seul panneau; les fenêtres divisées ont plusieurs panneaux.
tmux ne fournit pas de moyen d'ajouter des processus supplémentaires à un panneau une fois qu'il a été démarré avec sa commande initiale. C'est au processus de cette commande initiale (généralement un shell) de fournir le contrôle des tâches1 pour ce terminal.
Si vous voulez écraser ce qui est actuellement en cours d'exécution dans le panneau, vous pouvez utiliser respawn-pane -k
pour tuer la commande existante et la remplacer par une nouvelle (par exemple, respawn-pane -t sessionname:0.4 -k 'some -new command'
).
Mais, si vous voulez maintenir ce qui est actuellement en cours d'exécution dans le panneau, alors il n'y a peut-être pas de meilleure option que de simplement "taper dessus" avec send-keys
.
Vous pouvez écrire un script comme ceci (attachez le dernier, car sinon le script attendra simplement 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 commande send-keys
, vous devriez réellement taper les lettres E n t e r, pour dire à tmux
d'envoyer une touche de retour à la fenêtre. (Bien sûr, chaque commande se termine par la touche Enter.)
1Le contrôle des tâches est l'arbitrage entre plusieurs groupes de processus d'une session unique qui utilise le tty comme terminal de contrôle. C'est-à-dire, la touche de suspension Ctrl+Z, et les commandes shell jobs
, fg
, et bg
.