天天看点

Emacs中如何在指定目录下运行shell命令

原文地址:https://raw.githubusercontent.com/lujun9972/lujun9972.github.com/source/Emacs之怒/Emacs中如何在指定目录下运行shell命令.org

shell-command

shell-comand-to-string

可以用来在Emacs中运行shell命令,这两个函数都会自动根据shell命令是否以

&

结尾来自动同步/异步调度shell命令。

这两个命令的不同点在于:

  • shell-command

    将shell命令的输出结果写入到新的buffer中
  • shell-command-to-string

    则将输出结果作为字符串返回

这两个命令内部都调用

call-process

,因此会将

default-directory

的值作为shell命令的工作目录(详细说明可以参见

call-process

的说明).

因此,Emacs中在指定目录下运行shell命令只需要在

let

中临时修改

default-directory

的值就行了,像这样

(let ((default-directory "/tmp"))
  (shell-command-to-string "pwd"))
      
/tmp