Bash: выполнить скрипт при сохранении файла? - PullRequest
5 голосов
/ 19 июля 2010

Я бы хотел использовать Bash для автоматического запуска набора тестов при сохранении любого файла в заданном каталоге.

Существует ли механизм для bash для выполнения заданного сценария при сохранении событий?

Спасибо.

:: EDIT ::

Я должен был упомянуть, что использую OSX.

Ответы [ 4 ]

5 голосов
/ 19 июля 2010

Отредактировано: вы (OP) упомянули, что используете OSX.Я не знаю ни о каких подобных инструментах на OSX.Существует низкоуровневый системный вызов (унаследованный от BSD), который называется " kqueue ", но вам придется реализовать свой собственный инструмент пользовательского уровня.Существует пример приложения от Apple, которое называется « Watcher », но это только концептуальное подтверждение и не делает то, что вы хотите.

Существует другой поток об этом в Stack Overflow (также неокончательно).

Из-за отсутствия соответствующего инструмента, если вы используете определенный язык программирования, я бы посоветовал вам искать решения, уже написанные для него.В противном случае, я думаю, что вы застряли в опросе и управлении изменениями самостоятельно ...

Вот мой оригинальный ответ на основе Linux для целей архивирования:

Если вы используете Linux,Возможно, вы захотите взглянуть на inotify .В частности, вы можете установить inotify-tools , которые включают в себя inotifywait.

. С его помощью вы можете отслеживать файлы и каталоги по ряду событий, таких как доступ, изменение, открытиезакрытие и многое другое.inotifywait может завершиться после обнаружения указанного события, и поэтому простой цикл даст вам то, что вы хотите:

while :; do
    inotifywait -e modify /some/directory
    run_test_suite
done

Кстати, многие языки программирования и среды уже имеют своих собственных постоянных исполнителей тестов(например, с Python вы можете использовать tdaemon , среди других).

0 голосов
/ 20 июля 2010

Вы можете использовать inotify, как описано здесь Пример Inotify: Введение в Inotify с примером программы C *

0 голосов
/ 19 июля 2010

Используйте dnotify, только если inotify недоступно в вашей системе (ядро linux <2.6.13). </em>

dnotify - это стандартный метод linux для просмотра каталогов:

http://en.wikipedia.org/wiki/Dnotify

Пример кода.Следите за изменениями в каталоге:


dnotify WATCH_DIR -M -e SCRIPT_TO_EXECUTE

Обратите внимание, что SCRIPT_TO_EXECUTE будет выполняться каждый раз, когда изменяется любой файл в WATCH_DIR.

0 голосов
/ 19 июля 2010

Вы можете использовать incron , чтобы определить, когда файл был закрыт.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...