在 emacs 中,我可以交互地做这样的事情:
Mx eshell <返回>
cd /sudo:privileged@myserver:
/path/to/mycommand
这是令人愉快的一切,但我真的很想能够在 elisp 代码中做这样的事情,作为自动化平凡任务的功能的一部分:
(shell-command "/sudo:privileged@myserver:/path/to/mycommand")
这不太行。显然 shell-command 试图找到路径 /sudo:privileged@myserver: 并且可以理解地抱怨。
是否有一种机制可以让我以编程方式在远程服务器上运行任意命令?我知道,在紧要关头,我可以求助于调用`(shell-command "ssh privileged@myserver /path/to/mycommand")。不幸的是,由于我所在的网络怪癖,我在某种程度上依赖于 tramp 多跳代理功能,因此从 tramp 执行此操作似乎更简单。
我查看了 tramp.el 以了解他们如何实现他们的 tramp-handle-shell-command 拦截器,但看起来他们没有考虑这种情况,或者我可能需要先欺骗它使用正确的缓冲区. 我有哪些选择?
(我使用的是 GNU Emacs,而不是 xemacs,以防万一)。