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

能否通过expect发送Control-B+d序列实现tmux会话分离?

解决Expect脚本中发送tmux分离快捷键无效的问题

你编写的Expect脚本试图创建tmux会话、执行echo hello后分离会话,但分离操作时终端输出字面字符^Bd而非触发tmux的分离功能。

问题原因

单独发送\x02和d会被终端识别为两个独立的普通字符,而非tmux能识别的快捷键组合(Ctrl+B+d)。

修正后的脚本

你可以通过以下两种方式让Expect模拟真实的键盘按键序列:

方式一:使用十六进制ASCII码表示控制字符

spawn bash
expect " $"
send "tmux\r"
expect " $"
send "echo hello\r"
# 连续发送Ctrl+B(\x02)和d
send "\x02d"
interact

方式二:使用Expect的控制键语法

spawn bash
expect " $"
send "tmux\r"
expect " $"
send "echo hello\r"
# ^B代表Ctrl+B,与d组合发送
send "^Bd"
interact

原理说明

  • 在Expect中,\xNN用于表示十六进制的ASCII字符,\x02对应键盘输入的Ctrl+B;
  • 用^前缀也可以直接表示控制键,比如^B等价于Ctrl+B;
  • 必须将控制字符与后续按键d连续发送,才能让tmux识别为完整的快捷键指令,而非单独的字面字符。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 16:01:06