Czy istnieje sposób na sprawdzenie indeksu poszczególnych okien w Tmux?
Wiem, że mogę uruchomić coś takiego:
tmux display-message -p "#{pane_index}"
ale działa to tylko w aktywnym panelu. Chcę, aby działał dla dowolnego panelu, w którym jest uruchomiony. Zwykle trudno jest uruchomić skrypt w panelu, który nie jest aktywnym panelem, ale możesz to zrobić, jeśli użyjesz :set-window-option synchronize-panes
do synchronizacji danych wejściowych między wszystkimi panelami.
Jak miałbym tego użyć?
W mojej pracy muszę jednocześnie łączyć się z wieloma identycznymi serwerami w module równoważenia obciążenia, co robię z panelami Tmux. Zwykle włączam funkcję synchronizacji okienek, aby umożliwić mi wysyłanie identycznych informacji do każdego panelu w tym samym czasie. To działa świetnie.
Uważam, że chciałbym połączyć się z serwerami i czasami zrobić coś unikalnego dla każdego panelu, używając za każdym razem tego samego „indeksu okien”. Na przykład uruchomiłbym polecenie tak:
ssh NODE_$(get_pane_number)
który po zsynchronizowaniu i uruchomieniu w każdym panelu uruchomiłby następujące polecenia w oknie z 4 panelami:
ssh NODE_0
w okienku 0
ssh NODE_1
w okienku 1
ssh NODE_2
w okienku 2
ssh NODE_3
w okienku 3
Oczywiście mógłbym to napisać, ale działałoby to dobrze, zanim zacznę synchronizować dane wejściowe. Są chwile, kiedy chciałbym to zrobić po tym, jak zacząłem synchronizować dane wejściowe.
Możesz uzyskać wszystkie indeksy okien, a także wiele innych informacji o panelach
Zobacz
tmux(1)
FORMATY, aby uzyskać listę informacji, które możesz uzyskać i z którymi możesz pracować.źródło
get_pane_number
który faktycznie zwraca właściwy # bez aktywnego panelu.Opierając się na dwóch proponowanych rozwiązaniach, znalazłem dla siebie tę funkcję:
lub to samo, zaczynając od indeksu = 1
Nie jest najładniejszy, ale działa i mogę go wrzucić
.bashrc
i używać,$I
kiedy tylko zajdzie taka potrzebaźródło