如何从运行在emacs内的子进程中输出标准脚本

如何从运行在emacs内的子进程中输出标准脚本,emacs,subprocess,Emacs,Subprocess,我希望在emacs--script中,子进程的输出回显到终端 我有一个名为“printer.els”的文件,其中包含以下内容: #!/usr/bin/emacs --script (apply 'call-process "/usr/bin/printf" nil t nil (list "%s%d\n" "hunter" "23")) (princ (format-time-string "%Y%m%d\n" (current-time))) 当我使用命令“emacs--script pri

我希望在emacs--script中,子进程的输出回显到终端

我有一个名为“printer.els”的文件,其中包含以下内容:

#!/usr/bin/emacs --script
(apply 'call-process "/usr/bin/printf" nil t nil (list "%s%d\n" "hunter" "23"))
(princ (format-time-string "%Y%m%d\n" (current-time)))
当我使用命令“emacs--script printer.els”运行它时,我在终端上得到以下输出:

Loading 00debian-vars...
Loading /etc/emacs/site-start.d/50autoconf.el (source)...
Loading /etc/emacs/site-start.d/50cmake-data.el (source)...
Loading /etc/emacs/site-start.d/50dictionaries-common.el (source)...
Loading debian-ispell...
Loading /var/cache/dictionaries-common/emacsen-ispell-default.el (source)...
Loading /var/cache/dictionaries-common/emacsen-ispell-dicts.el (source)...
Loading /etc/emacs/site-start.d/50flim.el (source)...
Loading /etc/emacs/site-start.d/50git-core.el (source)...
Loading /etc/emacs/site-start.d/50psvn.el (source)...
Loading /etc/emacs/site-start.d/50w3m-el.el (source)...
20140904
我希望在“20140904”之前输出“hunter23”


我在Ubuntu12.04(“emacs24”“24.3+1-2~ppa2~precise1”)和Debian Wheezy(“emacs24”“24.3+1-4~bpo”)上运行Emacs 24.3

您所需要做的就是将输出消息发送到可读的地方。 您已经在代码中指定要将输出转到当前缓冲区,但在像您这样以--script模式运行时,这没有意义,您应该选择一个特定的缓冲区,然后在完成后发送消息给
缓冲区字符串

(带临时缓冲区)
(应用“调用过程”/usr/bin/printf“nil(当前缓冲区)nil(列表“%s%d\n”“hunter”“23”))
(消息(缓冲区字符串)))

如果您要运行一个较长的进程,最好使用
启动进程
,并使用进程过滤器在输出时抓取和打印文本。

请注意,这将仅在进程退出后打印进程的输出。我确实希望将此问题转移到emacs stackexchange。