我正在尝试从远程文件在 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>
因此需要单独的调用。