关于emacs:如何在elisp中捕获shell命令的标准输出?

How to capture standard output of a shell command in elisp?

我想在Emacs中运行shell命令并将完整输出捕获到变量。 有没有办法做到这一点? 例如,我希望能够以下列方式将hello-string设置为"hello"

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

函数capture-stdout-of-shell-command是否存在,如果存在,它的真实名称是什么?


shell-command-to-string符合您的目的吗?
例如:

1
(shell-command-to-string"/bin/echo hello")

希望这可以帮助。


我有一个建议,这延伸了Ise Wisteria的答案。 尝试使用这样的东西:

1
2
3
4
(setq my_shell_output
  (substring
    (shell-command-to-string"/bin/echo hello")
   0 -1))

这应该将字符串"hello"设置为my_shell_output的值,但要干净利落。 使用(substring)消除了当emacs调用shell命令时往往会发生的尾随
。 它在Windows上运行的emacs中困扰我,也可能在其他平台上发生。