У меня есть файл с именем file1, который я хочу в скрипте, всякий раз, когда в нем есть изменения, делайте что-то, фактически звуковой сигнал. Как я могу это сделать?
8
У меня есть файл с именем file1, который я хочу в скрипте, всякий раз, когда в нем есть изменения, делайте что-то, фактически звуковой сигнал. Как я могу это сделать?
Если вы inotify-tools
установили (по крайней мере, это имя пакета в Debian), когда вы можете сделать что-то вроде этого:
while inotifywait -q -e modify filename >/dev/null; do
echo "filename is changed"
# do whatever else you need to do
done
Это ожидает события «modify» с файлом с именем «filename». Когда это происходит, inotifywait
команда выводит filename MODIFY
(которую мы отбрасываем, отправляя вывод в / dev / null), а затем завершается, что приводит к вводу тела цикла.
Прочтите справочную страницу для inotifywait
получения дополнительных возможностей.
while
. Также обратите внимание, что то, что человек считает «модифицировать», может не всегда работать: например, он будет ловить добавление, но не будет отлавливать редактор, такой какvim
(просматриваемый файл переименовывается или заменяется резервной копией) илиperl -i
(на месте) редактировать), который заменяет файл новым. Как только это произойдет,inotifywait
никогда не вернется. Просмотр inode и просмотр имени файла - это не одно и то же, поэтому это зависит от варианта использования.move_self
, перехватывать переименования. Смотрите man-страницу для полного списка событий.Без inotifywait вы можете использовать этот маленький скрипт и задание cron (каждую минуту или около того):
источник
Пришел искать однострочник на MacOS. Поселился на следующем. Скомпилировал и добавил этот инструмент в мой путь. Это заняло менее 30 секунд.
Затем я пошел в каталог, в котором я хотел сделать просмотр. В этом случае я хотел посмотреть файл уценки на наличие изменений, и если он был изменен, выдайте сообщение a
make
.Вот и все.
источник
brew install kqwait
и вы можете передать несколько файлов ему, какkqwait **/*
Вам, вероятно, не нужно сравнивать md5sum, если у вас есть доступная утилита diff.
! отрицает, например, истина, если утверждение ложно
Предостережение: вам нужен исходный файл для сравнения с diff, который (imo) совпадает с тем, что делает скрипт md5sum выше.
источник
diff -q
, еслиdiff
поддерживает это.-q
означает «отчет, если только файлы отличаются», а не как они отличаются. Таким образом,diff -q
прекращается сравнение в тот момент, когда видна разница, что может быть очень полезным с точки зрения производительности. См. Документацию GNU , например. Если весь смысл вашего ответа эффективен, если не использоватьmd5sum
, то отказ от использования,diff -q
если он доступен, побеждает этот пункт.Вы можете попробовать
entr
инструмент командной строки, например,источник
entr
должен быть установлен или, по крайней мере, так обстоит дело с Ubuntu. Он должен присутствовать в большинстве дистрибутивных репозиториев.если вы проверяете изменения в git-репо, вы можете использовать:
источник
а.
cp orginalfile fileneedto_be_changed
'(Нужно сделать только один раз)б.
источник