Сделайте что-нибудь при изменении файла

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

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

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

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

23
задан Jens Erat
23.05.2023 18:42 Количество просмотров материала 3573
Распечатать страницу

3 ответа

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

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

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

inotifywait code.cpp -e modify

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

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

4
отвечен lostriebo 2023-05-25 02:30

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

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

1
отвечен Steven Monday 2023-05-25 04:47

, а не watch make как о watch ls? Тогда просто make при изменении метки времени.

0
отвечен Scott C Wilson 2023-05-25 07:04

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх