我写了一个脚本,打开了我工作中需要的几个文本文件(例如期刊等)。该脚本如下所示:
#! /bin/bash
DOCPATH=$HOME/Documents
NUMDOCPATH=$DOCPATH/Numerics
emacs $DOCPATH/UTA_WorkProtocol.txt &
emacs $NUMDOCPATH/NumProtocol.txt &
emacs $NUMDOCPATH/CITCOM/Protocol.txt &
工作正常,文件正常打开。但是,最后我想创建另一个脚本来再次保存和关闭这些文件。但是,我还没有找到任何命令来保存和/或关闭使用bash脚本在后台运行的打开的emacs文件。我可以更方便地运行这样的脚本而不是在每个txt文件中执行C-X C-s,因为我可能会将新文件添加到"打开"脚本。
请有更多有经验的人帮助我。谢谢!
答案 0 :(得分:2)
这有点像黑客,但bash
脚本并不适合这种类型的UI脚本。
#! /bin/bash
DOCPATH=$HOME/Documents
NUMDOCPATH=$DOCPATH/Numerics
emacs $DOCPATH/UTA_WorkProtocol.txt &
emacs $NUMDOCPATH/NumProtocol.txt &
emacs $NUMDOCPATH/CITCOM/Protocol.txt &
emacs # *Not* in the background
kill $(jobs -p)
当您准备关闭emacs的所有后台实例时,只需关闭前台中的那个。这将导致最终emacs
退出,这将允许脚本继续执行kill
命令,这将终止剩余的后台作业。
请注意,最终的emacs
可以是阻止脚本完成的任何命令,并且可以轻易自行终止。
答案 1 :(得分:2)
你必须使用bash吗?在Emacs lisp中很容易:
(defun open-files ()
(interactive)
(find-file "UTA_WorkProtocol.txt")
(find-file "NumProtocol.txt")
(find-file "CITCOM/Protocol.txt"))
(defun close-files ()
(interactive)
(save-buffers-kill-emacs)
然后打开一个Emacs实例并在M-x
中运行这些命令。