每次更改文件时自动运行一个命令

每次我对文件进行一些更改并保存时,我都想要一个命令来运行。 我可以设置一个Ruby脚本来监视文件并运行命令,但是我发现应该有一些简单的Unix方法来执行此操作。 在那儿? 我在Ubuntu 8.10,稍微不太模糊。

编辑:

incron被build议,看起来不错。 但我无法正常工作(编辑:当我将文件保存在指定目录中,或者我的命令有问题时,该命令似乎不运行)。 我安装incron,并使用incrontab设置我的用户的incron表,并将用户添加到允许列表。 我的具体情况是编辑一个TeX文件。 我希望命令将其呈现为PDF格式,以便每次编辑和保存TeX文件时运行。 所以这是我提出的incron表条目:

 /home/ehsanul/Documents/latex IN_CLOSE_WRITE echo $@/$# | grep \\.tex$ | xargs xelatex 

我究竟做错了什么?

你没有说你正在使用哪种Unix,但是Linux有inotify ,还有inotify-tools和incron 。

有一个Ruby接口来通知。

不是直接的,不是(除非在我不熟悉的文件系统上有某种钩子)。

你是否通过一些标准的方法编辑文件? 如果是这样,从这个angular度而不是从系统级别自动执行命令会更容易。

如果你告诉我们更多的情况,我们可能会给你更好的答案。

如果你碰巧使用版本控制(如果你不这样做,你当然应该!),你可以设置一个提交钩子。 只要select一个版本控制程序,可以让你做到这一点,其中大部分是做的。

安装inotify-tools 。

要查看单个文件并在更改时执行命令:

 inotifywait -m --format %w FILENAME | while read file; do COMMAND ${file} done 

哪里

  • FILENAME :您要观看的文件的名称
  • COMMAND :你想要执行的文件更改命令
  • -m :可以无限期地收听

inotifywait可以输出更多的信息,而不仅仅是文件名(通过--format ),检查man inotifywait它可以做什么(这是一个相当短的阅读)。 另外,wiki上的例子给出了一些见解。

有人可能应该把这些命令包装在方便的脚本中,而这正是你所要求的

 convenience-script FILENAME COMMAND