Tmux

如何附加到第一個未附加的 tmux 會話,或者如果沒有未附加的會話,則創建一個新會話?

  • March 13, 2020

如何附加到**沒有附加客戶端的第一個 tmux 會話,**或者如果沒有未附加的會話,則創建一個新會話並附加到該會話?

(案例是在打開新終端視窗時執行我的終端模擬器的命令。我不希望它在每次打開視窗時創建一個新會話,如果周圍有分離的會話。我也不如果已經有一個視窗附加到該會話,希望它每次都重新附加到同一個命名會話。我希望它回收現有的未附加會話,但在沒有未附加的會話時創建新會話。)

使用 tmux 本身可能有一種更簡單的方法來執行此操作,而無需使用 shell 腳本。但我通過結合幾個腳本讓它工作。

第一個腳本列印出第一個未附加會話的名稱。這是,tmux-first-unattached-session

#!/usr/bin/env sh
# Print the name of the first tmux session that has no clients attached.
tmux ls -F '#{session_name}|#{?session_attached,attached,not attached}' 2>/dev/null | grep 'not attached$' | tail -n 1 | cut -d '|' -f1

第二個腳本附加到第一個未附加的會話或新會話:

#!/usr/bin/env sh
# Attach to the first tmux session that has no attached clients.
# If there are no unattached sessions, then create a new session.
tmux attach -t `,tmux-first-unattached-session` 2> /dev/null || tmux

引用自:https://unix.stackexchange.com/questions/529048