Существует ли простой способ автоматического запуска команды (Терминал) при каждом изменении файла в определенной папке?
Это должно быть возможно через командную строку или встроенное приложение системы, без сторонних приложений.
Любые идеи?
macos
terminal
command-line
Луи Б.
источник
источник
Ответы:
Сохраните список свойств следующим образом
~/Library/LaunchAgents/test.plist
:Агент может быть загружен с помощью
launchctl load ~/Library/LaunchAgents/test.plist
или выхода из системы и обратно. Для внесения изменений требуется выгрузка и загрузка plist.Расширение Tilde (
~/
) работает в WatchPaths по умолчанию. EnableGlobbing добавляет подстановочные знаки и расширения тильды для ProgramArguments, но это не влияет на Program или WatchPaths.Если отслеживаемый файл изменяется в течение десяти секунд после последнего вызова, подобное сообщение добавляется в system.log:
Один из способов избавиться от сообщений - добавить что-то вроде
sleep 10
конца скриптов. Установка ThrottleInterval в 10 не помогает.Изменения в подпапках просматриваемых папок не обнаружены.
Смотрите
man launchd
иman launchd.plist
для получения дополнительной информации.источник
entr (1) - это утилита для запуска команд при изменении файлов. Он читает список файлов на STDIN и использует kqueue (2), чтобы избежать опроса.
Пример:
источник
Вы можете использовать действия с папками, которые позволяют выполнять сценарии (Automator) при изменении содержимого папки. Насколько я знаю, в Automator есть шаблон, который позволяет легко создать новое действие папки и прикрепить его к нужной папке. А добавив действие «Run Shell Script», вы должны просто получить желаемый эффект.
источник
Действия с папками подходят для запуска при добавлении или изменении файла.
Однако, если ваше определение измененного включает удаление файла, действия с папкой OSX не определяют, был ли файл удален.
Чтобы ответить на вопрос:
Загрузите зависимости FileWatcher отсюда: https://github.com/eonist/swift-utils
Познакомьтесь с командой swift в командной строке: http://krakendev.io/blog/scripting-in-swift
Используйте этот код для просмотра папки.
Код:
источник
Automator имеет тип рабочего процесса, называемого «Папка-действие», который автоматически запускается при добавлении чего-либо в папку. Создайте его, затем используйте действие «Run Shell Script».
источник
Вы можете попробовать что-то вроде этого:
источник
ls -l
также отследить изменения файла.