Mac 的 inotifywait 替代命令?

Lor*_*ren 8 mac launchd macos

就像是

$ macwatch dir_or_file cmd_to_execude_when_arg1_is_changed

在此期间我不必编写 XML。我知道/sf/ask/106101131/。它可以是launchd的包装器-我只想能够输入上述命令。

Woj*_*rek 11

您引用的 StackOverflow 问题已添加另一个答案 - fswatchHomebrew 中有实用程序。

请注意fswatchcommand 更类似于inotifywatch,而不是inotifywait。意味着,它不是一次性等待文件更改然后退出,而是进入无限循环打印更改的文件 - 这样您就可以使用 Unix 管道捕获更改。那么你的脚本将是“由内而外”让我们说。

例如,在 Linux 上,我通常有一个 oneliner,它使用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)

希望这可以帮助 :)

干杯

  • 其实我自己经常需要这样的东西,在回答这个之后我写了这样一个包装器:https://github.com/herenowcoder/forever/blob/master/forever (2认同)