3

当我重新启动它时,我经常(每周)在 Emacs 中做这种事情:

  1. 打开连接到 RSH 服务器的 shell,执行一些命令,重命名缓冲区
  2. 对几个不同的远程机器重复第 1 步

我在想:有没有办法让我可以在启动脚本中对这些设置进行硬编码?

4

2 回答 2

3

这是一个启动 shell、ssh-es 到主机并在进入交互式 shell 之前运行命令的函数:

(defun start-remote-shell (host command)
  (shell (format "*shell-%s*" host))
  (sleep-for 0 500)  ; Wait half a second for the prompt to appear
  (insert (format "ssh -t %s %s'; exec bash -i'"
                  (shell-quote-argument host)
                  (shell-quote-argument (shell-quote-argument command))))
  (comint-send-input))

您可以将此代码段放入您的.emacs文件中,然后是您想要的特定调用,例如:

(start-remote-shell "server-one" "apache start")
(start-remote-shell "server-two" "mysql start")
(start-remote-shell "server-three" "foo start")
于 2012-07-23T15:06:12.163 回答
0

我认为这样的事情可以帮助你:

(mapc (lambda (server)
    (shell (concat "*shell-" server "*"))
    (insert "ls")
    (comint-send-input)
    (insert "ps ax")
    (comint-send-input))
  '("server1" "server2"))

如您所见,使用 insert 写入控制台,使用 comint-send-input 就像在终端中按回车键一样。在此示例中,将在两个 shell 缓冲区上执行 ls 和 ps

于 2012-07-23T17:21:36.007 回答