Tmux ключи для удаления ключей

Я пытаюсь запустить ряд команд в tmux из удаленного файла, например, так:

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

Файл содержит такие команды, как split-window а также send-keys

Проблема в, send-keys убирает пробелы. Команды отправки ключей:

send-keys ssh example.com C-m;

Но вместо этого он отправляет sshexample.com

Есть идеи почему?

Ура!

4 ответа

Решение

Как догадка, это интерпретацияsend-keys ssh example.com C-m;"как четыре отдельных аргумента и не зная, что поставить между ними.

Пытаться:

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

Дело не в том, что send-keys - это именно "удаление пробелов", а в том, что Space является одним из специальных ключей, распознаваемых tmux и ожидаемых для использования с send-keys команда.

Так что вместо

send-keys ssh example.com C-m;

в этом случае вы бы использовали

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

Подробнее об этом можно узнать из синтаксиса ключей отправки tmux

Он делает это потому, что<Space>ключ считается специальным символом. Чтобы решить эту проблему, вам нужно выйти из персонажа, используя\ключ.

Допустим, мы хотим отправить командуipython --no-autoindentк терминалу. Если бы мы сделали это так:

tmux send-keys 'ipython --no-autoindent

Отправленный результат будет:$ ipython--no-autoindent

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

Вот как отправить его с выходом из пробела:

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

И если вы попробуете это, ваш результат будет:$ ipython --no-autoindent

Я немного боролся с подобной проблемой. Решение оказалось:

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

благодаря -lTmux обратил внимание на все признаки. С другой стороны, он не принял <enter> поэтому отдельный звонок не требуется.

Другие вопросы по тегам