You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为SSH自动启动的Tmux添加会话选择菜单?

SSH连接时的交互式Tmux会话选择脚本

替换你原有的.bashrc脚本代码,即可实现带选择菜单的Tmux会话管理功能:

if [ "$PS1" != "" -a "${STARTED_TMUX:-x}" = x -a "${SSH_TTY:-x}" != x ]
then
    STARTED_TMUX=1; export STARTED_TMUX
    sleep 1

    # 获取所有现有Tmux会话名称,忽略错误输出
    TMUX_SESSIONS=$(tmux list-sessions -F "#{session_name}" 2>/dev/null)

    # 构建选择菜单选项
    options=()
    if [ -n "$TMUX_SESSIONS" ]; then
        while IFS= read -r sess; do
            options+=("连接会话: $sess")
        done <<< "$TMUX_SESSIONS"
    fi
    options+=("创建新会话")
    options+=("跳过Tmux直接进入Shell")

    # 显示交互式选择菜单
    echo "请选择操作:"
    select opt in "${options[@]}"; do
        case $opt in
            "连接会话:"*)
                # 提取会话名称并尝试连接
                SESS_NAME="${opt#连接会话: }"
                tmux attach-session -t "$SESS_NAME" && exit 0
                echo "无法连接到会话 $SESS_NAME,请重新选择"
                break
                ;;
            "创建新会话")
                # 支持自定义会话名称,默认沿用原脚本的remote
                read -p "输入新会话名称(默认remote): " NEW_SESS
                NEW_SESS=${NEW_SESS:-remote}
                tmux new-session -s "$NEW_SESS" && exit 0
                echo "无法创建新会话 $NEW_SESS,请重新选择"
                break
                ;;
            "跳过Tmux直接进入Shell")
                echo "进入普通Shell会话"
                break
                ;;
            *)
                echo "无效选项,请输入对应数字重新选择"
                ;;
        esac
    done

    echo "Tmux操作完成"
fi

功能细节说明

  • 动态菜单生成:自动扫描当前所有Tmux会话,生成对应的连接选项
  • 交互式选择:通过select命令生成简洁菜单,用户输入数字即可完成操作
  • 自定义会话:创建新会话时可指定名称,未输入则使用默认的remote
  • 容错处理:会话连接/创建失败时给出提示,允许重新选择
  • 灵活退出:提供跳过Tmux直接进入Shell的选项,满足临时需求

使用提示

  • 确保服务器已安装Tmux,否则脚本会直接进入普通Shell
  • 仅在SSH连接且未启动过Tmux的场景下触发,避免本地Shell重复执行

内容的提问来源于stack exchange,提问作者Neliker

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 19:31:17