web-dev-qa-db-ja.com

elispでシェルコマンドの標準出力をキャプチャする方法は?

Emacs内でシェルコマンドを実行し、変数への完全な出力をキャプチャしたいと思います。これを行う方法はありますか?たとえば、次の方法でhello-string"hello"に設定できるようにしたいと思います。

(setq hello-string (capture-stdout-of-Shell-command "/bin/echo hello"))

関数capture-stdout-of-Shell-commandは存在しますか?存在する場合、その本名は何ですか?

37

Shell-command-to-stringあなたの目的を満たしますか?
例えば:

(Shell-command-to-string "/bin/echo hello")

お役に立てれば。

59
Ise Wisteria

伊勢藤の答えを拡張する提案があります。次のようなものを使用してみてください。

(setq my_Shell_output
  (substring 
    (Shell-command-to-string "/bin/echo hello") 
   0 -1))

これにより、文字列"hello"my_Shell_outputの値として設定されますが、きれいに設定されます。 (substring)を使用すると、emacsがシェルコマンドを呼び出すときに発生する傾向のある末尾の\nが排除されます。これは、Windowsで実行されているemacsで気になり、おそらく他のプラットフォームでも発生します。

17
Chris McMahan