使用bash脚本中的emacs打开和关闭txt文件

时间:2016-09-29 18:16:51

标签: linux bash shell emacs

我写了一个脚本,打开了我工作中需要的几个文本文件(例如期刊等)。该脚本如下所示:

#! /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,因为我可能会将新文件添加到"打开"脚本。

请有更多有经验的人帮助我。谢谢!

2 个答案:

答案 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中运行这些命令。