I'm trying to run a series of commands in tmux from a remote file like so:

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

The file contains commands like split-window and send-keys

The problem is, send-keys is stripping spaces. The send-keys commands is:

send-keys ssh example.com C-m;

But instead it sends sshexample.com

Any idea why?


4 Answers 4


As a guess, it's interpreting "send-keys ssh example.com C-m;" as four separate arguments and not knowing what to put between them.


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

It is not that send-keys is "stripping spaces" exactly, but that Space is one of the special keys recognized by tmux and expected to be used with the send-keys command.

So, rather than

send-keys ssh example.com C-m;

in this case, you would use

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

More on this can be found on tmux send-keys syntax


It's doing that because the <Space> key is considered a special character. To fix the issue, you need to escape the character by using the \ key.

Let's say we want to send the command ipython --no-autoindent to the terminal. If we did it like this:

tmux send-keys 'ipython --no-autoindent

The output sent would be: $ ipython--no-autoindent


This is how to send it with escaping the space:

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

And if you try it, your output would be: $ ipython --no-autoindent


I've struggled a bit with similar issue. The solution turned out to be:

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

thanks to -l, tmux paid attention to all the signs. On the downside, it didn't accept <enter> so separated call is required.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.