Gibt es eine Möglichkeit, den Fensterindex eines bestimmten Fensters in Tmux herauszufinden?
Ich weiß, dass ich so etwas ausführen kann wie:
tmux display-message -p "#{pane_index}"
Das funktioniert aber nur im aktiven Bereich. Ich möchte, dass es für jeden Bereich funktioniert, in dem es ausgeführt wird. Normalerweise ist es natürlich schwierig, ein Skript in einem Bereich auszuführen, der nicht der aktive Bereich ist. Sie können dies jedoch tun, wenn Sie die :set-window-option synchronize-panes
Eingabe zwischen allen Fenstern synchronisieren.
Wie würde ich das benutzen?
In meinem Job muss ich gleichzeitig eine Verbindung zu mehreren identischen Servern in einem Load Balancer herstellen, was ich mit Tmux-Fenstern mache. Normalerweise aktiviere ich die Funktion zum Synchronisieren von Fenstern, damit ich alles, was ich tippe, gleichzeitig an jedes Fenster senden kann. Das funktioniert super.
Ich finde, dass ich manchmal eine Verbindung zu den Servern herstellen und für jeden Bereich etwas Einzigartiges tun möchte, wobei ich jedes Mal denselben "Fensterindex" verwende. Zum Beispiel würde ich einen Befehl wie folgt ausführen:
ssh NODE_$(get_pane_number)
Wenn es synchronisiert und in jedem Bereich ausgeführt wird, werden die folgenden Befehle in einem Fenster mit 4 Fenstern ausgeführt:
ssh NODE_0
im Bereich 0
ssh NODE_1
in Bereich 1
ssh NODE_2
in Bereich 2
ssh NODE_3
in Bereich 3
Ich könnte dies natürlich skripten, aber das würde nur gut funktionieren, bevor ich anfing, Eingaben zu synchronisieren. Es gibt Zeiten, in denen ich dies tun möchte, nachdem ich auch mit der Synchronisierung von Eingaben begonnen habe.
Sie können alle Fensterindizes sowie viele andere Informationen zu den Fenstern mit abrufen
Unter
tmux(1)
FORMATE finden Sie eine Liste mit Informationen, mit denen Sie arbeiten können.quelle
get_pane_number
, das tatsächlich das richtige # zurückgibt, ohne dass der Bereich aktiv ist.Aufbauend auf den beiden vorgeschlagenen Lösungen fand ich, dass diese Funktion für mich funktioniert:
oder dasselbe beginnend mit index = 1
Es ist nicht das schönste, aber es funktioniert und ich kann es in mein fallen lassen
.bashrc
und es einfach verwenden,$I
wann immer ich es brauchequelle