У меня есть папка с кучей вложенных папок, в этих папках есть asciidoctor
файлы с расширением .adoc
.
Каждый раз, когда я вношу изменения в файлы (а это часто), мне нужно запускать
asciidoctor -q filename.adoc
для компиляции их в формат HTML.
Я пытаюсь автоматизировать этот процесс. Пока что я пришел к этому, используя entr:
ls *.adoc | entr asciidoctor -q *.adoc
но это работает только с существующей папкой, а не с вложенными папками. Я пробовал этот вариант, но он не работает:
find . -name '*.adoc' | entr asciidoctor -q *.adoc
Есть идеи, как я могу реализовать этот автоматический процесс для всех вложенных папок?
если да, запустить asciidoctor на нем
find. -name '* .adoc' | пока читал ФАЙЛ; do ["$ {FILE}" -nt "$ {FILE% adoc} html"] && asciidoctor -q "$ {FILE}"; done
или вставить скрипт:
#! /bin/bash
find . -name '*.adoc' | while read FILE; do
if [ "${FILE}" -nt "${FILE%adoc}html" ]; then
asciidoctor -q "${FILE}"
fi
done
Однострочный скрипт или скрипт можно запускать из crontab каждую минуту:
crontab -e
добавить строку
* * * * * /home/joe/update_adoc.bash
Перед тем, как вы начнете вносить изменения, я предлагаю вам сделать отметку времени, например
touch time.stamp.file
После редактирования вы можете найти все измененные файлы по
find . -name '*.adoc' -newer time.stamp.file -exec asciidoctor -q {} +
Это можно сделать с помощью инструмента с открытым исходным кодом monit
!
Давайте добавим следующее в /etc/monit.conf
:
check file test with path /path/tp/test
if changed checksum then exec "/bin/bash /path/to/script.sh" as uid a_user_id and gid a_group_id
Мы должны убедиться, что пользователь с a_user_id
as id
имеет достаточные привилегии to / path / to / test
file и
чтение, выполнение привилегий для /path/to/script.sh
Когда мы меняем monit. conf
затем как root:
monit reload
для получения изменений в демон monit
watch monit status
может отображать изменения в отчете monit
при запуске события
Например, в этом примере
при изменении содержимого файла / path / to / test
будет запущен сценарий /path/to/script.sh
По умолчанию monit
просыпается каждые 30 секунд и выполняет настроенные проверки.
Чтобы проверить добавление нового файла в каталог или изменение файла в каталоге:
check directory test2 with path /path/to<br/>
if changed timestamp then exec "/bin/bash /path/to/script.sh" as uid a_user_id and gid a_group_id
Я считаю, что эту конфигурацию можно легко обновить чтобы соответствовать потребностям вашего приложения!