본문 바로가기
IT 전자기기

termux 접속시 tmux 선택 옵션

by 다사도 2026. 1. 31.
반응형
# 1. tmux d 명령어를 위한 함수 정의 (강력한 버전)
# 'tmux d'라고만 쳐도 'tmux detach-client'가 실행되도록 가로챕니다.
tmux() {
  if [ "$1" = "d" ]; then
    command tmux detach-client
  else
    command tmux "$@"
  fi
}

# 2. SSH 접속 시 tmux 매니저 실행 (번호 표시 및 지능형 접속)
if [ -n "$SSH_CONNECTION" ] && [ -z "$TMUX" ]; then
    echo "===================================="
    echo "      TERMUX TMUX MANAGER"
    echo "===================================="
    
    # 세션 목록 가져오기
    SESSION_LIST=$(command tmux ls 2>/dev/null)
    
    if [ -n "$SESSION_LIST" ]; then
        echo " [ 현재 실행 중인 세션 ]"
        # 각 줄 앞에 [번호]를 붙여서 출력 (0부터 시작)
        echo "$SESSION_LIST" | awk '{print " ["NR-1"] "$0}'
    else
        echo "  (실행 중인 세션이 없습니다)"
    fi

    echo "------------------------------------"
    echo " [ 선택 옵션 ]"
    echo "  - 숫자(번호) 또는 이름 : 세션 접속"
    echo "  - n : 새 세션 생성"
    echo "  - Enter : 일반 쉘(Bash) 진입"
    echo "------------------------------------"

    read -p "입력 선택 > " input

    case $input in
        "") 
            echo "일반 쉘로 진입합니다."
            ;;
        n)
            read -p "새 세션 이름 입력 (기본: main): " s_name
            s_name=${s_name:-main}
            command tmux new-session -s "$s_name"
            ;;
        *)
            # 입력값이 숫자인 경우 목록에서 해당 순서의 이름을 따옴
            if [[ "$input" =~ ^[0-9]+$ ]]; then
                TARGET_INDEX=$((input + 1))
                TARGET_NAME=$(echo "$SESSION_LIST" | sed -n "${TARGET_INDEX}p" | cut -d: -f1)
                
                if [ -n "$TARGET_NAME" ]; then
                    command tmux attach-session -t "$TARGET_NAME"
                else
                    echo "에러: [$input] 번 세션이 존재하지 않습니다."
                fi
            # 숫자가 아닌 경우 이름으로 직접 접속
            else
                command tmux attach-session -t "$input" || echo "에러: '$input' 세션을 찾을 수 없습니다."
            fi
            ;;
    esac
fi

# 3. TMUX 내에서 EXIT 입력 시 확인 절차
function exit_tmux() {
    if [ -n "$TMUX" ]; then
        echo -n "tmux 가상창이 완전히 종료됩니다. 종료하시겠습니까? [y/n] "
        read -r answer
        if [ "$answer" = "y" ]; then
            command exit
        else
            echo -e "\n종료가 취소되었습니다."
        fi
    else
        command exit
    fi
}

# exit 명령어를 위 함수로 연결
alias exit='exit_tmux'

 

~/.bashrc 파일에 넣으면 끝

반응형

댓글