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

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

每次我对文件进行一些更改并保存时,我都希望运行一个命令。我可以设置一个 Ruby 脚本来监视文件并按我的意愿运行命令,但我突然想到应该有一些简单的 Unix 方法来做到这一点。有吗?我在 Ubuntu 8.10 上,稍微清楚一点。

编辑:

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

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

我究竟做错了什么?

答案1

你没有说你使用的是哪个 Unix,但是 Linux 有通知还有inotify 工具因克龙

有一个Ruby 接口到 inotify。

答案2

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

您是否通过某种标准方法编辑文件?如果是这样,从这个角度而不是从系统级别自动化命令会更容易。

如果您告诉我们更多情况,我们也许能够给您更好的答案。

答案3

如果您碰巧使用版本控制(如果您没有,您当然应该使用!),您可以设置提交钩子。只需选择一个允许您这样做的版本控制程序,大多数版本控制程序都允许这样做。

答案4

安装inotify 工具

要监视单个文件并在其更改时执行命令:

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

在哪里

  • FILENAME:您要观看的文件的名称
  • COMMAND:文件更改时要执行的命令
  • -m:无限期收听的选项

inotifywait可以输出除文件名之外的更多信息(通过--format),请查看man inotifywait它还能做什么(阅读起来很短)。此外,例子在 wiki 上提供一些见解。

有人可能应该将这些命令包装在方便的脚本中,以便完全按照您的要求执行

convenience-script FILENAME COMMAND

相关内容