Эквивалент команды оболочки Emacs с режимом tramp - PullRequest
2 голосов
/ 03 декабря 2010

В emacs я могу сделать что-то подобное в интерактивном режиме:

M-x eshell

cd /sudo:privileged@myserver:
/path/to/mycommand

Это приятно и все, но мне бы очень хотелось иметь возможность делать что-то подобное в коде elisp, как часть функции для автоматизации мирской задачи:

(shell-command "/sudo:privileged@myserver:/path/to/mycommand")

Это не совсем работает. Очевидно, что shell-команда пытается найти путь / sudo: privileged @ myserver: и по понятным причинам жалуется.

Существует ли механизм, с помощью которого я могу запускать произвольную команду на удаленном сервере программно? Я знаю, что в крайнем случае я мог бы прибегнуть к вызову `(shell-команда" ssh privileged @ myserver / path / to / mycommand "). К сожалению, из-за особенностей сети, в которой я нахожусь, я в некоторой степени зависел от функции прокси-сервера tramp multihop, поэтому было бы проще сделать это из tramp.

Я посмотрел на tramp.el, чтобы увидеть, как они реализуют свой перехватчик tramp-handle-shell-command, но не похоже, что они рассматривают подобные случаи, или, может быть, мне нужно обмануть их, используя правый буфер первым. Какие у меня варианты?

(я использую GNU Emacs, а не xemacs, если это имеет значение).

1 Ответ

4 голосов
/ 03 декабря 2010

Используйте eshell-command, если вы хотите выполнить команду в eshell.

...