【发布时间】:2018-09-25 22:29:39
【问题描述】:
我正在尝试检测 iTerm2 的存在,如果我在 iTerm2 (echo -n $'\e[5n'; read -s -t 0.1 line; printf '%q\n' "$line") 中运行以下命令,终端会回复 $'\033'\[ITERM2\ 3.2.1n$'\033'\[0n
但是,如果我在终端中运行 tmux 会话,则 tmux 会响应并且什么也没有给我。
知道如何让 tmux 查询物理终端以报告其状态吗?
脚注
-
这里是 tmux 源码中
[5n的描述:https://github.com/tmux/tmux/blob/486ce9b09855ae30a2bf5e576cb6f7ad37792699/tools/ansicode.txt#L577 -
这可能只是 iTerm2,因为我没有在任何其他终端上看到响应
【问题讨论】:
-
在这种情况下,
echo回显到它所在的直接终端,即 tmux。然后 tmux 必须将$'\e[5n'传递给它包含在 (iTerm2) 中的终端,但 tmux 会亲自响应echo。我个人不确定如何避免这种情况。 -
我刚刚找到了这个 [unix.stackexchange.com/questions/213799/…],也许我可以在 tmux 中绑定一个响应,让它在看到 '\e[0n' 时输入这个词