就像是
$ macwatch dir_or_file cmd_to_execude_when_arg1_is_changed
在此期间我不需要编写 XML。我知道https://stackoverflow.com/questions/1515730/is-there-a-command-like-watch-or-inotifywait-on-the-mac。它可以是 launchd 的包装器 - 我只是希望能够输入上述命令。
答案1
您引用的 StackOverflow 问题已添加另一个答案 - fswatch
Homebrew 中就有实用程序。
请注意,fswatch
命令更类似于inotifywatch
,而不是inotifywait
。意思是,它不是一次性等待文件更改然后退出,而是进入无限循环打印更改的文件 - 这样您就可以使用 Unix 管道捕获更改。然后您的脚本就会“从内而外”地运行。
例如,在 Linux 上,我通常有一个单行程序,它在文件更改时使用以下命令运行我的命令inotifywait
:
while true; do inotifywait -q -e modify files... ; my_command; done
为了fswatch
达到同样的效果我需要:
fswatch files... | (while read; do my_command; done)
以上内容假设您不需要将更改的文件作为命令的参数。如果您需要它们,则如下所示:
fswatch files... | (while read x; do echo $x | xargs my_command; done)
希望这可以帮助 :)
干杯