当我重新启动它时,我经常(每周)在 Emacs 中做这种事情:
- 打开连接到 RSH 服务器的 shell,执行一些命令,重命名缓冲区
- 对几个不同的远程机器重复第 1 步
我在想:有没有办法让我可以在启动脚本中对这些设置进行硬编码?
这是一个启动 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")
我认为这样的事情可以帮助你:
(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