Совместное использование gnome-terminal и tmux: как запустить самый последний рабочий каталог?

342
xuhdev

В настоящее время я использую gnome-терминал и tmux вместе: каждый раз, когда я запускаю gnome-терминал, запускается tmux:

#!/bin/bash  args=() if type tmux > /dev/null; then args+=('-e' "tmux new-session") fi  exec gnome-terminal "$" "$@" 

Но как я могу запустить tmux с рабочим каталогом самого последнего активного сеанса tmux, если существует один активный сеанс tmux?

0

1 ответ на вопрос

1
meuh

Что может помочь, так это list-panesкоманда, которую вы можете использовать -aдля всех. По умолчанию он не обеспечивает то, что вы хотите, но вы можете задать ему формат, в который, например, входят pane_current_pathи, возможно, достаточно других значений, чтобы вы могли решить, какую из панелей вы хотите скопировать. Например

$ tmux list-panes -a -F 'uniq=#D pane=#P title="#T" sess=#S windex=#I winnam=#W activ=# pwd=#' 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 

Значение каждой переменной, например, #Dдля уникального идентификатора панели, описано на странице руководства в разделе ФОРМАТЫ. Вы можете выбрать самый большой из этих идентификаторов в качестве самой последней панели, а pwd=значение - в качестве нужного каталога. Например, передайте указанную выше команду tmux в

 | awk '} END' 

Используя window_activityпеременную в более поздних tmuxes, которая дает время в секундах с начала последней активности в окне, вы можете упростить приведенное выше, перечислив только это значение и текущий путь, и выбрав путь для максимального значения активности:

tmux list-panes -a -F '# #' | awk '} END' 
Спасибо! Я предлагаю использовать сеанс с наибольшим значением `window_activity` в качестве последнего использованного сеанса. Ты согласен? Можем ли мы положить это в ответ? xuhdev 7 лет назад 0
Мой tmux не имеет переменной `window_activity`. Вы имеете в виду `window_activity_flag` или` window_active`? Обе они имеют только 0 или 1, поэтому может быть много панелей с одинаковым значением. meuh 7 лет назад 0
Доступно как минимум в версии 2.3: "window_activity Целочисленное время последней активности окна" xuhdev 7 лет назад 0
Это отличное решение. У меня нет более нового tmux, но я просмотрел его справочную страницу и обновил свой ответ. Благодарю. meuh 7 лет назад 0

Похожие вопросы