Czy istnieje prosty sposób automatycznego uruchamiania polecenia (Terminal) za każdym razem, gdy plik jest zmieniany w określonym folderze?
Powinno to być możliwe za pośrednictwem wiersza polecenia lub aplikacji wbudowanej w system, bez aplikacji innych firm.
Jakieś pomysły?
macos
terminal
command-line
Louis B.
źródło
źródło
Odpowiedzi:
Zapisz listę nieruchomości w następujący sposób
~/Library/LaunchAgents/test.plist
:Agenta można załadować
launchctl load ~/Library/LaunchAgents/test.plist
lub wylogować się i zalogować ponownie. Zastosowanie zmian wymaga rozładowania i załadowania listy odtwarzania.Rozbudowa tyldy (
~/
) domyślnie działa w WatchPaths. EnableGlobbing dodaje rozszerzenie symboli wieloznacznych i tyldy dla ProgramArguments, ale nie wpływa na Program ani WatchPaths.Jeśli obserwowany plik zostanie zmodyfikowany w ciągu dziesięciu sekund od ostatniego wywołania, komunikat taki jak ten zostanie dodany do system.log:
Jednym ze sposobów na pozbycie się wiadomości jest dodanie czegoś
sleep 10
na końcu skryptu. Ustawienie ThrottleInterval na 10 nie pomaga.Zmiany w podfolderach obserwowanych folderów nie są wykrywane.
Zobacz
man launchd
iman launchd.plist
więcej informacji.źródło
entr (1) to narzędzie do uruchamiania poleceń w przypadku zmiany plików. Czyta listę plików na STDIN i używa kqueue (2), aby uniknąć odpytywania.
Przykład:
źródło
Możesz użyć akcji folderu, która pozwala wykonywać skrypty (Automator) przy każdej zmianie zawartości folderu. O ile mi wiadomo, Automator ma szablon, który pozwala łatwo utworzyć nową akcję folderu i dołączyć ją do żądanego folderu. Dodając akcję „Uruchom skrypt powłoki”, powinieneś uzyskać pożądany efekt.
źródło
Akcje folderów nadają się do wyzwalania, gdy plik jest dodawany lub modyfikowany.
Jeśli jednak twoja definicja zmiany obejmuje usunięcie pliku, akcje folderu OSX nie wykrywają, czy plik został usunięty.
Aby odpowiedzieć na pytanie:
Pobierz zależności FileWatcher stąd: https://github.com/eonist/swift-utils
Zapoznaj się z bieganiem swift w linii poleceń: http://krakendev.io/blog/scripting-in-swift
Użyj tego kodu, aby obejrzeć folder.
Kod:
źródło
Automator ma typ przepływu pracy o nazwie „Akcja folderu”, który jest automatycznie uruchamiany, gdy coś zostanie dodane do folderu. Utwórz taki, a następnie użyj akcji „Uruchom skrypt powłoki”.
źródło
Możesz spróbować czegoś takiego:
źródło
ls -l
złapać zmiany plików.