4

Что-то вроде

$ 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 ответ1

5

На вопрос StackOverflow, который вы цитировали, добавлен еще один ответ - в Homebrew есть утилита fswatch .

Обратите внимание, что команда fswatch больше похожа на 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)

Надеюсь это поможет :)

ура

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .