Uruchom skrypt przy zmianie pliku w Mac OS X.

8

Czy ktoś wie o programie dla systemu Mac OS, który może przekazać nazwę do pliku wykonywalnego i pliku do obejrzenia, aby następnie uruchamiał plik wykonywalny przy każdej zmianie oglądanego pliku?

Mam na myśli coś takiego:

$ fwatch /Users/foo/doc.tex /Users/foo/run-pdflatex.sh &
  fwatch running. Listening for changes in /Users/foo/doc.tex.
$ echo "This aint no LaTeX" > doc.tex
$ fwatch: Change in /Users/foo/doc.tex detected. Running /Users/foo/run-pdflatex.sh...
Johannes
źródło

Odpowiedzi:

6

Możesz to skonfigurować za pomocą uruchomionego . W szczególności należy użyć klucza ścieżek śledzenia w uruchomionej liście, aby wyszukać zmiany w tym pliku.

Wyczerpujące informacje dostępne w tym artykule AFP548 .

Chociaż wydaje się, że nie jest już w fazie rozwoju, Lingon jest aplikacją zapewniającą GUI do skonfigurowania uruchomionych plików plist.

EDYTOWAĆ:

Z grubsza, oto, co zrobiłbyś przy użyciu przykładowych ścieżek powyżej. Zapisz plik o com.superuser.run-pdflatex.plistnastępującej treści do~/Library/LaunchAgents

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
    <dict>
        <key>Label</key>
    <string>com.superuser.run-pdflatex</string>
    <key>OnDemand</key>
    <true/>
    <key>Program</key>
    <string>/Users/foo/run-pdflatex.sh</string>
    <key>ProgramArguments</key>
    <array>
            <string>run-pdflatex.sh</string>
    </array>
    <key>WatchPaths</key>
    <array>
            <string>/Users/foo/doc.tex</string>
    </array>
    </dict>
</plist>

Następnie wpisz launchctl load ~/Library/LaunchAgents/com.superuser.run-pdflatex.plistterminal, aby załadować demona obserwującego pliki.

Powyżej jest niesprawdzony, ale taki jest ogólny pomysł.

ghoppe
źródło
2

Możesz to zrobić w Automatorze. Uważam, że jest to opcja folderów w przepływie pracy automatyzatora (nie przed komputerem Mac). Następnie wystarczy dołączyć skrypt do folderu i będzie on uruchamiany przy każdym dodaniu / zmianie pliku.

MDMarra
źródło
Nie mogę do końca nadążyć. Jestem nowy w Automatorze, ale o ile wiem, nie możesz wybrać, kiedy wykonać skrypt, ale tylko, co zrobić, gdy jest uruchomiony. W systemie Mac OS są akcje folderów, których mógłbym również użyć, ale pomyślałem, że AppleScript ma tylko akcję „dodawania elementów folderów do”, ale nic takiego jak „zmienianie elementów folderów w”.
Johannes
Masz rację @Johannes. Chociaż istnieją czynności folderów służące do dodawania elementów folderów, usuwania elementów folderów, przenoszenia okna folderów, zamykania okna folderów i otwierania folderu, nie ma akcji folderów służącej do wykrywania zmian w plikach. Możesz to zobaczyć, otwierając słownik StandardAdditions.osax w edytorze Applescript.
ghoppe