Existe uma maneira de descobrir o índice do painel de um painel específico no Tmux?
Eu sei que posso executar algo como:
tmux display-message -p "#{pane_index}"
mas isso só funciona no painel ativo. Quero que funcione para qualquer painel em que ele seja executado. Normalmente, é difícil executar um script em um painel que não seja o painel ativo, mas você pode se usar a :set-window-option synchronize-panes
sincronização de entrada entre todos os painéis.
Como eu usaria isso?
No meu trabalho, preciso conectar-me a vários servidores idênticos em um balanceador de carga ao mesmo tempo, o que faço com os painéis do Tmux. Normalmente, ative o recurso de painéis de sincronização para que eu possa enviar o que eu digitar de forma idêntica para cada painel ao mesmo tempo. Isso funciona muito bem.
O que eu acho é que, às vezes, gostaria de conectar-me aos servidores e fazer algo exclusivo para cada painel, usando o mesmo "índice de painel" a cada vez. Por exemplo, eu executaria um comando assim:
ssh NODE_$(get_pane_number)
que, quando sincronizado e executado em cada painel, executaria os seguintes comandos em uma janela com 4 painéis:
ssh NODE_0
no painel 0
ssh NODE_1
no painel 1
ssh NODE_2
no painel 2
ssh NODE_3
no painel 3
É claro que eu poderia escrever isso, mas isso só funcionaria bem antes de começar a sincronizar as entradas. Há momentos em que eu gostaria de fazer isso depois de começar a sincronizar as entradas também.
Você pode obter todo o índice do painel, bem como muitas outras informações sobre os painéis com
Consulte
tmux(1)
FORMATS para obter uma lista de informações com as quais você pode obter e trabalhar.fonte
get_pane_number
que realmente retorne o # certo sem que o painel esteja ativo.Com base nas duas soluções propostas, achei que essa função funcionava para mim:
ou a mesma coisa que começa com index = 1
Não é a mais bonita, mas funciona e posso colocá-la na minha
.bashrc
e usar$I
sempre que precisofonte