当前位置:  开发笔记 > 开发工具 > 正文

在emacs lisp中哪个shell命令?

如何解决《在emacslisp中哪个shell命令?》经验,为你挑选了2个好方法。

如果我试图在我调用rsync(或scp)多次的Emacs Lisp函数中运行shell命令,我应该使用哪个shell-command变量?我目前正在使用shell-command,它会锁定Emacs,直到完成该过程,并且不会打印带有--verboseto的应该可见的输出rsync; 我可以用shell-command&在命令字符串的结尾,使其同步,这并打印进度-但同时它并没有完全"锁定"的Emacs,迷你缓冲区反复问我是否要终止的进程是沉重同时; 并且start-process-shell-command,只有在传输第一个文件/目录后才会暂停该功能; 当rsync通过我的功能进行多次通话时忽略其余部分.这些都不是理想的,任何提示?



1> Jonathan Ark..:

我自己使用启动过程取得了最大的成功.

(start-process "process-name" 
               (get-buffer-create "*rsync-buffer*") 
               "/path/to/rsync"
               arg1
               ...
               argn)

这会将所有输出发送到单个缓冲区.



2> Trey Jackson..:

一种解决方案可能是在实际的shell缓冲区中运行该命令.然后你可以选择运行哪一个:

M-x shell
M-x eshell
M-x term

如果你喜欢这个想法,你可以这样编码:

(defun my-rsync-routine ()
  "run some rsync processes"
  (with-temp-buffer
    (shell (current-buffer))
    (process-send-string nil "rsync ...")
    (process-send-string nil "rsync ...")
    (process-send-string nil "rsync ...")))

详细'process-send-string了解其用法.您可能还希望对进程的输出进行一些错误检查.

推荐阅读
勤奋的瞌睡猪_715
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有