opsjournal.net

entr вместо watch: перезапуск по изменению файлов

· linuxутилиты

Короткая заметка. Годами для «пересобрать при изменении» я писал циклы с sleep или держал watch -n1. Оказалось, есть entr: маленькая утилита, которая делает ровно это.

Примеры

Прогонять тесты при изменении любого .py-файла:

find . -name '*.py' | entr -c pytest -q

Перезапускать сервер разработки (флаг -r убивает и перезапускает долгоживущий процесс):

ls *.go | entr -r go run .

Проверять конфиг nginx при каждом сохранении:

echo /etc/nginx/nginx.conf | entr -p sudo nginx -t

Нюанс с новыми файлами

entr следит только за файлами из списка на входе. Чтобы подхватывать новые, есть флаг -d: entr завершится, когда в каталоге появится файл, и его можно перезапустить в цикле:

while true; do find src -name '*.ts' | entr -d npm run build; done

Ставится из стандартных репозиториев: apt install entr.