Команда оболочки linux (и OSX) для выполнения при каждом сохранении файла - PullRequest
1 голос
/ 06 августа 2011

Я пытаюсь автоматически генерировать jsdoc при сохранении файла javascript.У меня есть рабочий скрипт, который хранит время последнего обновления файла (в настоящее время жестко запрограммировано) и сравнивает с текущей меткой времени этого файла.Я запускаю это в цикле while, который выполняется до нажатия CTRL-C, и вставляю 0,1-секундный режим ожидания, чтобы остановить использование процессора.

Это рабочий сценарий:

while :
do

if [ $(( lastTime )) -ne `stat -f %m -t %s javascript.js` ]
then
        lastTime=`stat -f %m -t %s javascript.js`
        # custom jsdoc generating script
        jsdoc javascript.js
        echo +++ Run: `date`  +++
fi

# stops while loop from consuming a lot of resources
# and making my fan whirr like he wants the computer to take off
sleep .1

done

Я знаю, что есть лучший путь, но не такой.Любая помощь приветствуется.

Редактировать: Обновление для Linux-машин с установленными inotify-tools, это должно работать

#!/bin/bash

# with inotify-tools installed...

# only watches first parameter for modification
while inotifywait -e modify $1; do
        echo
        echo +++ Building JSDocs +++
        jsdoc $@
        echo +++ Last run: `date`  +++
done

Однако я хотел бы, чтобы это работало как на Linux, так и на OSX, поэтому яможно использовать в обеих средах

1 Ответ

3 голосов
/ 06 августа 2011

Существует функция ядра Linux под названием INotify, которая отслеживает изменения файловой системы. Он представлен в виде ряда системных API.

Для сценариев существует пакет под названием inotify-tools, который предоставляет сценарии доступ к системе уведомлений.

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