Я пытаюсь выяснить, как прикрепить к tmux session
если существует именованный сеанс tmux, если нет, я хочу создать новый с заданным именем.
В настоящее время я знаю несколько tmux
команд, которые могут частично достичь того, что я ищу, но не ясно, как объединить их вместе, чтобы получить то, что я ищу:
tmux attach
присоединяется к автоматически существующему сеансу, но выдает ошибки, если сеанс не существуетtmux new
создает новый сеанс - но он делает это каждый раз, поэтому я не могу оставить его в своем.tmux.conf
tmux has-session
проверяет, существует ли сеанс - но я не знаю, как сшить его вместе с другими командами
Таким образом, я хотел бы создать скрипт tmux, чтобы это происходило автоматически, вместо того, чтобы создавать его вручную каждый раз, когда мне нужно войти в сеанс.
Как я могу написать автоматический скрипт, чтобы создать новый сеанс tmux (если данное имя сеанса не существует) или присоединиться к имени сеанса (если он существует)?
man tmux
говорит: «Флаг -A заставляет новую сессию вести себя как сессия присоединения, если сессия уже существует»Ответы:
Вы также можете добавить
к вашему
.tmux.conf
- это создаст сеанс по умолчанию при запуске сервера.Затем
tmux attach
либо присоединится к текущему сеансу (то есть запущенному серверу), либо создаст новый сеанс (запустите сервер, прочитайте файл конфигурации, выполнитеnew-session
команду) и присоединитесь к нему.источник
new-session
уничтожить, то это кажется реальной проблемой.source-file ~/.tmux.conf
)-A
опцию,new-session
если вы называете свою сессию.new-session -A -s mysession
будет хорошо играть с перезагрузкой конфигурации.Я понял это ( и указал мне ).
источник
tmux attach-session -t my-session || tmux new-session -s my-session
. Единственная проблема в том, что это не атомарно. В tmux действительно должна быть команда create-or-attach.alias tm='tmux attach || tmux new'
tmux attach -t some_name || tmux new -s some_name
. Измените some_name на $ 1, добавьте shebang и сохраните.new
vsnew-session
: они синонимы, а такжеattach
иattach-session
.tmux new-session -ds default \; split-window -dv 2>/dev/null; tmux attach -t default
работает намного лучше и не открывает второй tmux, если вы/bin/kill
первый. Единственным недостатком является то, что вам нужно назвать сессии для этого.Как указано в комментариях Петра Викторина , jkoelker и pjincz , вы можете использовать следующую команду, чтобы присоединиться к
mySession
ней, если она существует, и создать ее, если ее нет:От
man tmux
:new-session
поддерживает-A
с tmux-1.8 .источник
gnome-terminal
качестве команды, я бы предложил исключить-s
и конкретное имя сеанса, чтобы вы не заканчивали КАЖДЫЙ новыйgnome-terminal
сеанс, присоединенный к тому же сеансу. Вы всегда можете выбрать существующую сессиюprefix + s
после открытия нового терминала.Хотя я считаю, что ответа rampion достаточно для использования 1 сеанса, этот скрипт позволяет настроить несколько сеансов:
НОТА:
источник
Приспосабливая предложение Алекса включить конфигурацию на основе проекта при запуске, я начал использовать следующее:
где
tmux-myproject.conf
моя серия запуска команд tmux для создания окон и панелей, а также для запуска моих редакторов.источник
Я использую псевдоним для создания нового сеанса, если это необходимо, и присоединяюсь к сеансу по умолчанию, если он уже существует:
Я добавил это в мой .login на моем сервере.
Причина, по которой я это делаю, заключается в том, что я не хочу присоединяться к тому же самому сеансу, я хочу новый сеанс, который использует ту же группу окон.
Это также похоже на бег
screen -xRR
.источник
tmux list-sessions
.tmux new -A -s default
для запуска нового сеанса, если он не существует, или присоединить автоматически. Я думаю, что это намного лучше, чем редактирование конфигурационного файла.Для тех, кто хочет сделать то же самое в
fish
:источник