【问题标题】:Emacs shell-command equivalent with tramp-modeEmacs shell-command 等效于 tramp-mode
【发布时间】:2010-12-02 22:15:01
【问题描述】:

在 emacs 中,我可以交互地做这样的事情:

M-x 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,以防万一)。

【问题讨论】:

  • (eshell-command "pushd /sudo:privileged@myserver:;/path/to/mycommand;popd") 基本上是我最终使用的。 (shell 命令不处理 cd 或 pushd/popd 到流浪者路径)。谢谢,加雷斯。

标签: emacs elisp tramp


【解决方案1】:

如果您想在eshell 中运行命令,请使用eshell-command

【讨论】:

  • 啊哈。这是实现这一目标的合理方法;我什至可以使用 pushd 和 popd,这样我就不会对当前的 eshell 会话造成太大影响。
猜你喜欢
  • 2013-12-20
  • 1970-01-01
  • 2010-10-27
  • 2015-08-04
  • 2010-12-05
  • 2019-10-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多