Was helfen könnte, ist der list-panes
Befehl, den Sie -a
für alle verwenden können. Standardmäßig stellt es nicht das bereit, was Sie möchten, aber Sie können es in einem Format angeben, das beispielsweise die pane_current_path
und möglicherweise genügend andere Werte enthält, damit Sie entscheiden können, welche Bereiche Sie kopieren möchten. Z.B
$ tmux list-panes -a -F 'uniq=#D pane=#P title="#T" sess=#S windex=#I winnam=#W activ=#{pane_active} pwd=#{pane_current_path}'
uniq=%0 pane=0 title="myhost 2" sess=0 windex=0 winnam=bash activ=0 pwd=/home/meuh
uniq=%1 pane=1 title="myhost 3" sess=0 windex=0 winnam=bash activ=1 pwd=/home/meuh
uniq=%2 pane=0 title="myhost 4" sess=1 windex=0 winnam=bash activ=0 pwd=/tmp
uniq=%4 pane=1 title="myhost 5" sess=1 windex=0 winnam=bash activ=1 pwd=/usr/lib
uniq=%3 pane=0 title="myhost 1" sess=2 windex=0 winnam=bash activ=1 pwd=/tmp
Die Bedeutung jeder Variablen, z. B. #D
für eine eindeutige Fenster-ID, ist in der Manpage unter FORMATE beschrieben. Sie können die größte dieser IDs als aktuellsten Bereich und den pwd=
Wert als gewünschtes Verzeichnis auswählen . ZB leiten Sie den obigen tmux-Befehl in
| awk '{id=substr($1,7)+0;if(id>max){max=id;pwd=$NF}} END{print substr(pwd,5)}'
Wenn Sie die window_activity
Variable in späteren tmuxes verwenden, die die Zeit in Sekunden seit der letzten Aktivität im Fenster angibt, können Sie das Obige vereinfachen, indem Sie nur diesen Wert und den aktuellen Pfad auflisten und den Pfad für den maximalen Aktivitätswert angeben:
tmux list-panes -a -F '#{window_activity} #{pane_current_path}' |
awk '{time=$1+0;if(time>max){max=time;pwd=substr($0,length($1)+2)}} END{print pwd}'
window_activity
als die zuletzt verwendete Sitzung zu verwenden. Sind Sie einverstanden? Können wir es in die Antwort setzen?window_activity
Variable. Meinen Siewindow_activity_flag
oderwindow_active
? Da beide Werte nur 0 oder 1 sind, gibt es möglicherweise viele Bereiche mit demselben Wert.