Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 在bash脚本中使用emacs打开和关闭txt文件_Linux_Bash_Shell_Emacs - Fatal编程技术网

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

Linux 在bash脚本中使用emacs打开和关闭txt文件,linux,bash,shell,emacs,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 & 这可以正常工作,文件也可以正

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

#! /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,因为我可能也会在“打开”脚本中添加新文件


请有没有更有经验的人来帮我。谢谢

这有点像黑客,但是
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
可以是阻止脚本完成的任何命令,并且可以很容易地自行终止。

这有点像黑客,但是
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
可以是阻止脚本完成的任何命令,并且可以很容易地终止脚本本身。

必须使用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

中运行这些命令。您必须使用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
中运行这些命令。但是,如果我没有保存任何打开的,那么所做的所有更改都将丢失。真正了解
emacs
(不是我)的人应该发布一个答案,解释如何替换
kill
命令,该命令将适当的命令发送到
emacs
的每个运行实例,以正确保存和关闭。嗯,这似乎没问题。但是,如果我没有保存任何打开的,则所做的所有更改都将丢失。真正了解
emacs
(不是我)的人应该发布一个答案,解释如何替换
kill
命令,该命令将适当的命令发送到
emacs
的每个运行实例以正确保存和关闭。为什么?你在后台运行emacs窗口做什么?我基本上是用协议文件写下我做过的事情和发现的事情。因此,我从一开始就启动文件,写下所有重要的内容,并希望在只使用一个命令时自动关闭所有文件。为什么?你在后台运行emacs窗口做什么?我基本上是用协议文件写下我做过的事情和发现的事情。因此,我从一开始就启动文件,写下所有重要的内容,并希望在只使用一个命令时自动关闭所有文件。