¿Hay alguna manera de averiguar el índice del panel de un panel en particular en Tmux?
Sé que puedo ejecutar algo como:
tmux display-message -p "#{pane_index}"
pero eso solo funciona en el panel activo. Quiero que funcione para cualquier panel en el que se ejecute. Normalmente, por supuesto, es difícil ejecutar un script en un panel que no es el panel activo, pero puede :set-window-option synchronize-panes
hacerlo si usa la sincronización para la entrada entre todos los paneles.
¿Cómo usaría esto?
En mi trabajo, necesito conectarme a varios servidores idénticos en un equilibrador de carga al mismo tiempo, lo que hago con los paneles Tmux. Normalmente enciendo la función de sincronización de paneles para permitirme enviar lo que escribo de forma idéntica a cada panel al mismo tiempo. Esto funciona muy bien.
Lo que encuentro es que me gustaría conectarme a los servidores y hacer algo único para cada panel a veces, usando el mismo "índice de panel" cada vez. Por ejemplo, ejecutaría un comando así:
ssh NODE_$(get_pane_number)
que, cuando se sincroniza y ejecuta en cada panel, ejecuta los siguientes comandos en una ventana con 4 paneles:
ssh NODE_0
en el panel 0
ssh NODE_1
en el panel 1
ssh NODE_2
en el panel 2
ssh NODE_3
en el panel 3
Por supuesto, podría escribir esto, pero eso solo funcionaría bien antes de comenzar a sincronizar las entradas. Hay momentos en que me gustaría hacer esto después de que también haya comenzado a sincronizar entradas.
Puede obtener todo el índice del panel, así como mucha otra información sobre los paneles con
Vea
tmux(1)
FORMATOS para obtener una lista de información que puede obtener y con la que puede trabajar.fuente
get_pane_number
que realmente devuelva el # correcto sin que el panel esté activo.A partir de las dos soluciones propuestas, encontré que esta función funcionaba para mí:
o lo mismo comenzando con index = 1
No es el más bonito, pero funciona y puedo dejarlo en mi
.bashrc
y simplemente usarlo$I
cuando lo necesitefuente