更改文件时执行某些操作

Mar*_*ing 10 automation make

当我编写 LaTeX 文档时,我发现自己经常在编辑器中按 F6 进行编译。或者当我使用 SASS 时,我经常输入make将 my 转换.scss.css.

现在我想让机器在make每次给定文件更改时做脏活并运行或其他东西。

到目前为止,我一直打开一个终端窗口,然后按向上箭头并返回。或者我使用了watch make,但这似乎是一个奇怪的解决方案。

当给定的文件更改时,Linux 上是否有一种很好的方法来做某事?

los*_*ebo 4

您正在寻找inotify-toolsinotifywait的一部分。有一些如何在项目网站上使用它的示例,但一个简单的方法是,

while true; do inotifywait code.cpp -e modify; make; done
Run Code Online (Sandbox Code Playgroud)

其中的关键部分是,

inotifywait code.cpp -e modify
Run Code Online (Sandbox Code Playgroud)

该命令将等待直到code.cpp修改然后退出。放入无限循环并紧随其后,make使其在每次修改后不断重建。

除了等待修改之外,您还可以等待创建、删除、访问、打开、关闭等。我强烈建议您查看项目示例inotifywait 手册页,以了解有关如何使用它的其他一些想法。