Команда tmux attach
действует больше как комбинация screen -r
и screen -x
- сначала она пытается присоединиться к самому последнему отключенному сеансу, а затем, если ничего не доступно, она присоединится к текущему присоединенному сеансу. Я хочу эмулировать поведение screen -R
: сначала попытайтесь подключиться к отдельному сеансу, затем начните новый сеанс, если не было отключенных сеансов. Каков наилучший способ добиться этого в tmux?
10
(tmux ls 2>/dev/null | grep -vq attached && tmux at) || tmux
Несмотря на то, что сказано в руководстве tmux:
Ответ Дрю не будет работать должным образом в такой ситуации:
tmux at
присоединится к последнему сеансу (# 1) (даже если этот сеанс все еще прикреплен где-то еще). Это разрушает саму идею запуска нескольких сеансов tmux и присоединения только к отдельному (использовать mosh + tmux + iterm2 для создания идеального роумингового терминала).Другой подход заключается в том, чтобы вручную выбрать не присоединенный сеанс:
tmux ls | grep -vq attached && tmux at `tmux ls | grep -vm1 attached | cut -d: -f1`
источник
Я имею тенденцию проводить только две сессии tmux одновременно, поэтому я делаю что-то подобное в каждом окне терминала.
окно терминала 0:
окно терминала 1:
источник
Это сработало лучше для меня:
-T необходим для прикрепления к соответствующему сеансу.
источник
Что о
или вместо этого просто создайте файл,
~/.tmux.conf
если он не существует, и добавьтетак, что он создает новый сеанс, когда нет ни одного при запуске
tmux attach
.Также может быть полезно сделать
tmux
псевдоним дляtmux attach
.источник