147 votes

Comment envoyer des commandes lors de l'ouverture d'une session tmux dans une autre session tmux?

Une situation typique peut être:

 $ tmux
  [0] $ ssh example.com
      $ tmux attach
        [0] $ 
 

J'ouvre une session tmux, puis ssh dans un serveur et attache à une session tmux existante. À ce stade, j'ai une session tmux dans une autre. Comment envoyer des commandes à la session tmux interne?

Remarque: les deux sessions tmux ont les mêmes raccourcis clavier.

224voto

Chris Johnsen Points 50064

L' send-prefix commande peut être utilisée pour envoyer votre préfixe de frappe (le processus en cours d'exécution dans) le volet actif. Par défaut, le préfixe est C-b et C-b est lié à l' send-prefix (de sorte qu'il frappe deux fois envoie un C-b pour le volet actif). C'est ce dont nous avons besoin pour accéder aux fixations de l'intérieur de la tmux instance.

Le premier C-b est capturé par l ' "extérieur" tmux instance comme préfixe de la clé. Le second est capturé par l ' "extérieur" tmux instance et déclenche son C-b de liaison (send-prefix). Cela envoie un C-b à l'extérieur de l'instance du volet actif. Le processus de l'exécution dans ce volet est (en fin de compte, par le biais d'un ssh exemple) de la "intérieure" tmux instance. Il saisit le C-b comme préfixe de la clé. Maintenant, votre prochaine frappe sera passé par l'extérieur tmux instance et capturé par l'intérieur pour déclencher une liaison.

Pour déclencher le c de liaison (new-window) dans une deuxième instance de niveau de tmux, tapez C-b C-b c. Pour une troisième niveau de l'instance de tmux vous tapez C-b C-b C-b C-b c.

Ce doublement pour chaque niveau peut être gênant si vous êtes souvent faire face à de multiples couches de tmux. Si vous pouvez épargner une autre touche, vous pourriez faire un non-préfixés de liaison pour rendre les choses (peut-être) plus facile de taper:

bind-key -n C-\ send-prefix
bind-key -n C-^ send-prefix \; send-prefix

Créer une nouvelle fenêtre dans le deuxième niveau de tmux: C-\ c
Créer une nouvelle fenêtre dans le troisième niveau tmux: C-^ c (ou C-\ C\ c)


Si vous avez un nombre limité de combinaisons de commandes que vous voulez (facilement) envoyer à un niveau inférieur tmux cas, vous pouvez à la place utiliser send-keys à la création de certaines liaisons spécifiques (peut-être juste dans votre top-niveau tmux exemple):

bind-key C-c  send-keys C-b c
bind-key C    send-keys C-b C-b c

Créer une nouvelle fenêtre dans le deuxième niveau de tmux: C-b C-c
Créer une nouvelle fenêtre dans le troisième niveau tmux: C-b C

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X