tmux를 사용하여 셸을 시작하고 연결되지 않은 세션에만 연결

tmux를 사용하여 셸을 시작하고 연결되지 않은 세션에만 연결

현재 쉘을 열 때 tmux를 시작합니다. 내 쉘에 대한 구성은 다음과 같습니다.

[[ $TMUX == "" ]] && tmux new-session

내 쉘을 시작하고 연결되지 않은 (첫 번째) 세션이 있는 경우 tmux를 연결하는 방법이 있습니까? 쉘이 이미 연결되어 있으면 세션에 연결하고 싶지 않습니다.

답변1

적절한 형식을 사용하고 출력을 구문 분석하면 tmux list-session원하는 것을 얻을 수 있다고 생각합니다.

if [ -z "$TMUX" ]; then
    attach_session=$(tmux 2> /dev/null ls -F \
        '#{session_attached} #{?#{==:#{session_last_attached},},1,#{session_last_attached}} #{session_id}' |
        awk '/^0/ { if ($2 > t) { t = $2; s = $3 } }; END { if (s) printf "%s", s }')

    if [ -n "$attach_session" ]; then
        tmux attach -t "$attach_session"
    else
        tmux
    fi
fi

여기 형식은 tmux ls세션당 연결된 클라이언트 수, 마지막 연결 시간(이전에 연결되지 않은 경우 1, 예: 이후 tmux new -d) 및 세션 ID를 제공합니다. AWK 스크립트는 이 정보를 사용하여 현재 연결되지 않은 클라이언트에 대해 가장 최근에 연결된 세션을 찾고 해당 ID를 인쇄합니다. 그런 다음 해당 세션에 연결하거나 서버가 시작되지 않거나 모든 기존 세션을 연결하는 등 해당 세션을 찾을 수 없는 경우 새 세션을 만듭니다.

관련 정보