我使用libtmux和libtmux使用subprocess.Popen()来调用Tmux来控制会话,窗口和窗格。要设置窗格标题,Tmux需要发送转义序列。这可以按预期在命令行上运行:
tmux send-keys -t 0 " printf '\033]2;%s\033\\' 'Pane Title'" C-m
当这个命令由subprocess.Popen()或os.system()发出时 - 也可能是其他命令,我只测试了这两个 - 转义序列没有进入shell。我记录发送到文件的命令,并且日志文件中的值是正确的,但只有在发送时才能存活:
printf '2;%s' 'Pane Title'
我已经通过执行此命令对此进行了测试:
echo "printf '\033]2;%s\033\\' 'Pane Title'" > /tmp/setname
/ tmp / setname的内容如上所述。
最终使用的方法是tmux_cmd,我通过send_keys这样称呼它:
p.send_keys("printf '\033]2;%s\033\\' '" + names[i] + "'")
其中“p”是窗格对象。请参阅我的帖子here。
我的问题是:如何在Python中使用转义序列发出shell命令?
答案 0 :(得分:0)
"原始前缀"是我错过的!谢谢Jean-François Fabre!
这有效:
p.send_keys(r"printf '\033]2;%s\033\\' '" + names[i] + "'")