私はEmacsを再起動すると、この種のことを非常に頻繁に(毎週)行います。
- RSHサーバーに接続しているシェルを開き、いくつかのコマンドを実行し、バッファーの名前を変更します
- いくつかの異なるリモートマシンに対して手順1を繰り返します
私は考えていました:スタートアップスクリプトでこれらのセットアップをハードコーディングできる方法はありますか?
シェルを開始し、ホストに ssh-es して、対話型シェルにドロップする前にコマンドを実行する関数を次に示します。
(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"))
ご覧のとおり、コンソールへの挿入書き込みとcomint-send-inputを使用すると、ターミナルのリターンキーを押すようなものになります。この例では、lsとpsが2つのシェルバッファで実行されます