shell - texto - ¿Cómo enviar comandos al abrir una sesión de tmux dentro de otra sesión de tmux?
tmux para ubuntu (3)
El comando send-prefix
se puede usar para enviar su pulsación de tecla de prefijo al (el proceso que se ejecuta) en el panel activo. Por defecto, el prefijo es Cb y Cb está obligado a send-prefix
(de modo que al pulsarlo dos veces se envía un único Cb al panel activo). Esto es justo lo que necesitamos para acceder a los enlaces de la instancia interna de tmux .
El primer Cb es capturado por la instancia "externa" de tmux como su clave de prefijo. El segundo es capturado por la instancia "externa" de tmux y desencadena su enlace Cb ( send-prefix
). Esto envía un Cb al panel activo de la instancia externa. El proceso que se ejecuta en este panel es (en última instancia, a través de una instancia de ssh ) la instancia de tmux "interna". Captura el Cb como su tecla de prefijo. Ahora su próxima pulsación de tecla se pasará a través de la instancia externa de tmux y será capturada por la interna para activar un enlace.
Para activar el enlace c ( new-window
) en una instancia de segundo nivel de tmux , debe escribir Cb Cb c . Para una instancia de tercer nivel de tmux debe escribir Cb Cb Cb Cb c .
Esta duplicación para cada nivel puede ser molesto si habitualmente se trata de varias capas de tmux . Si puede usar alguna otra clave, puede hacer un enlace no prefijado para hacer que las cosas (posiblemente) sean más fáciles de escribir:
bind-key -n C-/ send-prefix
bind-key -n C-^ send-prefix /; send-prefix
Crear una nueva ventana en tmux de segundo nivel: C- / c
Crear una nueva ventana en tmux de tercer nivel: C- ^ c (o C- / C- / c )
Si tiene un número limitado de comandos tmux que desea (fácilmente) enviar a las instancias de tmux de nivel inferior, en su lugar podría usar send-keys
para crear algunos enlaces específicos (posiblemente solo en su instancia de tmux de nivel superior):
bind-key C-c send-keys C-b c
bind-key C send-keys C-b C-b c
Crea una nueva ventana en tmux de segundo nivel: Cb Cc
Crear una nueva ventana en tmux de tercer nivel: Cb C
Una situación típica puede ser:
$ tmux
[0] $ ssh example.com
$ tmux attach
[0] $
Abrí una sesión de tmux, luego ssh en un servidor y lo conecté a una sesión de tmux existente. En este punto, tengo una sesión de tmux dentro de otra. ¿Cómo envío comandos a la sesión interna de tmux?
Nota: Ambas sesiones de tmux tienen los mismos enlaces de teclas.
Para acceder al interior, mantenga el control y presione B dos veces.
EDITAR:
NO recomiendo usar Cq
como una clave de Cq
, ya que es un comando predeterminado de la tecla de control para
congela la pantalla y permite que la pantalla continúe
here ocurre una situación, y @Paschalis proporciona una solución:
si resulta ser dos veces desafortunada (una sesión remota de tmux con Cq como prefijo): Escriba
Cltr-q
, luego:
y escriba en tmux:send-keys Cq
Debajo está la respuesta:
Para hacerlo simple, agregue la siguiente línea en su ~/.tmux.conf
bind-key -n C-q send-prefix
Entonces puede usar directamente Cq
como bind-key para su tmux remoto.