10

Когда я пишу документ LaTeX, я обнаруживаю, что нажимаю F6 в моем редакторе для частой компиляции. Или когда я использую SASS, я часто набираю make чтобы конвертировать .scss в .css .

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

До сих пор я держал окно терминала открытым, нажимал стрелку вверх и возвращался. Или я использовал watch make , но это кажется странным решением.

Есть ли в Linux хороший способ что-то сделать при изменении данного файла?

3 ответа3

4

Вы ищете inotifywait , часть инструментов inotify. Есть несколько примеров того, как использовать его на сайте проекта, но простой подход

while true; do inotifywait code.cpp -e modify; make; done

ключевой частью которого является,

inotifywait code.cpp -e modify

Эта команда будет ждать, пока code.cpp будет изменен, а затем завершится . Поместите в бесконечный цикл и следуйте за make он постоянно перестраивался после каждой модификации.

Помимо ожидания изменения, вы можете ждать создания, удаления, доступа, открытия, закрытия и многого другого. Я настоятельно рекомендую просмотреть примеры проектов и страницу руководства inotifywait, чтобы найти другие идеи о том, как их можно использовать.

1

Посмотрите на incron, cron-подобный пакет, который реагирует на события файловой системы, а не на события времени. Пакет состоит из демона (incrond) и настольного манипулятора (incrontab), аналогичного известной паре crond/crontab cron.

С incron, вы можете легко организовать запустить make , когда определенные файлы и / или каталоги модифицируются.

0

Вместо того, чтобы watch make , как делать , как насчет watch ls? Тогда просто make когда отметка времени изменится.

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