Tmux send-keys 剥离空格

Tmux send-keys 剥离空格

我正在尝试从远程文件在 tmux 中运行一系列命令,如下所示:

tmux $(wget -qO- http://example.com/tmux)

该文件包含如下split-window命令send-keys

问题是,send-keys删除空格。send-keys 命令是:

send-keys ssh example.com C-m;

但它发送sshexample.com

知道为什么吗?

干杯!

答案1

我猜测,它将“ send-keys ssh example.com C-m;”解释为四个独立的参数,但不知道在它们之间放什么。

尝试:

tmux "$(wget -qO- http://example.com/tmux)"

答案2

send-keys 并不完全是“去除空格”,而是 Space 是 tmux 识别的特殊键之一,预计会与命令一起使用send-keys

因此,而不是

send-keys ssh example.com C-m;

在这种情况下,你可以使用

send-keys ssh Space example.com C-m;

更多详情可参见tmux send-keys 语法

答案3

这样做是因为该<Space>键被视为特殊字符。要解决此问题,您需要使用该\键转义该字符。

假设我们想将命令发送ipython --no-autoindent到终端。如果我们这样做:

tmux send-keys 'ipython --no-autoindent

发送的输出将是: $ ipython--no-autoindent

==================================

这是如何通过转义空格来发送它:

tmux send-keys 'ipython \ --no-autoindent'

如果你尝试一下,你的输出将是:$ ipython --no-autoindent

答案4

我曾经遇到过类似的问题。解决方案是:

tmux send-keys -l $var;
tmux send-keys C-m;

感谢-l,tmux 注意到了所有标志。缺点是它不接受,<enter>因此需要单独的调用。

相关内容