Задача: отслеживать в скриптах изменения файла или файлов и выполнять какие-нибудь команды, когда ...
Задача: отслеживать в скриптах изменения файла или файлов и выполнять какие-нибудь команды, когда файлы изменяются.
Пример: пересобирать документ LaTeX при изменении (сохранении) одного из исходных файлов.
Решение: остлеживать изменения можно с помощью утилит inotify-tools. Одна утилита,
inotifywait
ждёт указанных изменений и после этого завершается с тем или иным кодом возврата. Если произошло ожидаемое событие, код возврата
0
(успех). Именно
inotifywait
и используется в моём примере ниже. Другая утилита,
inotifywatch
, наблюдает за файлами и
собирает информацию об изменениях, на выходе выводит табличку того, что заметила. Примеры применения этой утилиты смотрите на сайте inotify-tools, там же есть и дополнительные примеры использования
inotifywait
.
Пример использования: в данном случае я предполагаю, что все исходные файлы документа LaTeX лежат в текущем каталоге, а для сборки достаточно использовать
pdflatex
и
bibtex
. Вечный цикл: ждём любых изменений файлов текста или библиографии (первая команда цикла), в случае успеха (обнаруженных изменений) исполняем все нужные команды сборки документа (вторая команда цикла).
while true ; do \
inotifywait *.tex *.bib \
&& ( pdflatex -interaction=nonstopmode mypaper && \
bibtex mypaper && \
pdflatex -interaction=nonstopmode mypaper ) \
done
Естественно, применять можно для чего угодно, не только для LaTeX.
P.S. Вариант запуска LaTeX с опцией
-interaction=nonstopmode
позволяет с одной стороны избежать запроса интерактивного ввода в случае ошибки компиляции, а с другой стороны, позволяет эти ошибки компиляции всё же увидеть.
P.P.S. Рецепт работает только в линуксе. Для *BSD есть библиотечка pnotify и kqueue.
Задача: отслеживать в скриптах изменения файла или файлов и выполнять какие-нибудь команды, когда ...
Задача: отслеживать в скриптах изменения файла или файлов и выполнять какие-нибудь команды, когда файлы изменяются.
Пример: пересобирать документ LaTeX при изменении (сохранении) одного из исходных файлов.
Решение: остлеживать изменения можно с помощью утилит inotify-tools. Одна утилита,
inotifywait
ждёт указанных изменений и после этого завершается с тем или иным кодом возврата. Если произошло ожидаемое событие, код возврата
0
(успех). Именно
inotifywait
и используется в моём примере ниже. Другая утилита,
inotifywatch
, наблюдает за файлами и
собирает информацию об изменениях, на выходе выводит табличку того, что заметила. Примеры применения этой утилиты смотрите на сайте inotify-tools, там же есть и дополнительные примеры использования
inotifywait
.
Пример использования: в данном случае я предполагаю, что все исходные файлы документа LaTeX лежат в текущем каталоге, а для сборки достаточно использовать
pdflatex
и
bibtex
. Вечный цикл: ждём любых изменений файлов текста или библиографии (первая команда цикла), в случае успеха (обнаруженных изменений) исполняем все нужные команды сборки документа (вторая команда цикла).
while true ; do \
inotifywait *.tex *.bib \
&& ( pdflatex -interaction=nonstopmode mypaper && \
bibtex mypaper && \
pdflatex -interaction=nonstopmode mypaper ) \
done
Естественно, применять можно для чего угодно, не только для LaTeX.
P.S. Вариант запуска LaTeX с опцией
-interaction=nonstopmode
позволяет с одной стороны избежать запроса интерактивного ввода в случае ошибки компиляции, а с другой стороны, позволяет эти ошибки компиляции всё же увидеть.
P.P.S. Рецепт работает только в линуксе. Для *BSD есть библиотечка pnotify и kqueue.
...
Шелест волн и шум прибоя успокаивает и расслабляет. И желательно, чтобы при этом он был настоящим. а не исходил от динамиков включенного компьютера. Иначе это совсем не та романтика, которой так хочется в ожидании лета. И для всех тех, кому хочется этого самого "живого" прибоя, но под рукой есть только ванная, дизайнер
Lim Loren придумал замечательный девайс под названием
Lotus.
Подробнее..
URL записи