执行shell命令
shell-command(M-!)
若调用的shell命令输出不多,则直接输出在echo area,否则会输出到*Shell Command Output* buffer
shell命令stderr输出默认被重定向到stdout输出到*Shell Command Output* buffer. 你也可以通过设定变量`shell-command-default-error-buffer`的值将stderr的输出重定向到指定的buffer
若shell命令执行失败(返回值不会0),则会在mode-line显示shell命令的返回值
默认情况下Emacs会同步等待shell命令执行完成,若要Emacs异步等待shell命令,在shell命令后加&表示后台运行
若在执行该命令前用C-u传递了universal参数,则会将结果插入到当前buffer的光标处
async-shell-command(M-&)
异步处理shell命令,命令输出到*Async Shell Command* buffer
若在执行该命令前用C-u传递了universal参数,则会将结果插入到当前buffer的光标处
变量`enable-recursive-minibuffer`
该变量值为t,则当要在minibuffer中输入某个参数时,可用用M-!执行一个shell命令,则会将该shell命令的输出作为minibuffer的待输入参数.
变量`shell-command-default-error-buffer`
你也可以通过设定变量`shell-command-default-error-buffer`的值将stderr的输出重定向到指定的buffer
shell-command-on-region(M-|)
将所选区域通过stdin传递到shell命令中,并在echo area或output buffer中显示命令的输出
若在执行该命令前用C-u传递了universal参数,则会将结果替代该region