原文位址:https://raw.githubusercontent.com/lujun9972/lujun9972.github.com/source/Emacs之怒/Emacs中如何在指定目錄下運作shell指令.org
shell-command
與
shell-comand-to-string
可以用來在Emacs中運作shell指令,這兩個函數都會自動根據shell指令是否以
&
結尾來自動同步/異步排程shell指令。
這兩個指令的不同點在于:
-
将shell指令的輸出結果寫入到新的buffer中shell-command
-
則将輸出結果作為字元串傳回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