当我编写 LaTeX 文档时,我发现自己经常在编辑器中按 F6 进行编译。或者当我使用 SASS 时,我经常键入make
将我的转换.scss
为.css
。
现在我想让机器做一些脏活,并且make
在每次给定的文件发生变化时运行或做其他事情。
到目前为止,我一直打开终端窗口并按下向上箭头和返回键。或者我使用watch make
,但这似乎是一个奇怪的解决方案。
当给定文件发生变化时,Linux 上是否有一个好的方法可以执行某些操作?
答案1
您正在寻找的inotifywait
是inotify 工具。项目网站上有一些如何使用它的示例,但一个简单的方法是,
while true; do inotifywait code.cpp -e modify; make; done
其中关键的是,
inotifywait code.cpp -e modify
该命令将等待,直到code.cpp
被修改然后退出。将其置于无限循环中并随后make
使其在每次修改后不断重建。
除了等待修改之外,您还可以等待创建、删除、访问、打开、关闭等。我强烈建议您查看项目实例和inotifywait 手册页了解有关如何使用它的一些其他想法。
答案2
看一下因克龙,一个类似 cron 的软件包,它响应文件系统事件,而不是时间事件。该软件包由一个守护进程 ( incrond
) 和一个表操作器 ( incrontab
) 组成,类似于众所周知的cron crond
/对。crontab
make
使用 incron,您可以轻松安排在修改特定文件和/或目录时运行。
答案3
而不是watch make
,怎么样watch ls
?那么就make
在时间戳改变的时候。