web-dev-qa-db-ja.com

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のラッパーにすることができます-上記のコマンドを入力できるようにしたいだけです。

6
Loren

あなたが引用したStackOverflowの質問に別の答えが追加されました-Homebrewにはfswatchユーティリティがあります。

fswatchコマンドは、inotifywatchではなく、inotifywaitに似ていることに注意してください。つまり、ファイルの変更をワンショットで待ってから終了するのではなく、変更されたファイルを出力する無限ループに入ります。そのため、Unixパイプで変更をキャッチできます。そうすると、スクリプトは「裏返し」になります。

たとえば、Linuxでは通常、inotifywaitを使用してファイルの変更に対してコマンドを実行するonelinerがあります。

_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)

お役に立てれば :)

乾杯

8