Mac 的 inotifywait 替代命令?

Mac 的 inotifywait 替代命令?

就像是

$ 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 问题已添加另一个答案 - fswatchHomebrew 中就有实用程序。

请注意,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)

希望这可以帮助 :)

干杯

相关内容