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;
благодаря -l
Tmux обратил внимание на все признаки. С другой стороны, он не принял <enter>
поэтому отдельный звонок не требуется.