如何为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
相关产品推荐
相关产品推荐

