Jalankan Script pada Perubahan File di Mac OS X

8

Adakah yang tahu tentang program untuk Mac OS bahwa Anda dapat meneruskan nama ke file yang dapat dieksekusi dan untuk menonton, sehingga ia menjalankan file yang dapat dieksekusi setiap kali file yang ditonton berubah?

Saya memiliki sesuatu seperti ini dalam pikiran:

$ 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
sumber

Jawaban:

6

Anda dapat mengatur ini menggunakan launchd . Khususnya, Anda perlu menggunakan kunci jalur jaga di launchd plist Anda untuk mencari perubahan dalam file itu.

Informasi lengkap tersedia dalam artikel AFP548 ini .

Meskipun tampaknya tidak lagi dalam pengembangan, Lingon adalah aplikasi yang menyediakan cara GUI untuk mengatur file-file plist launchd ini.

EDIT:

Secara kasar, inilah yang akan Anda lakukan menggunakan jalur sampel di atas. Simpan file com.superuser.run-pdflatex.plistdengan nama konten berikut ke~/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>

Kemudian Anda akan mengetik launchctl load ~/Library/LaunchAgents/com.superuser.run-pdflatex.plistdi terminal untuk memuat daemon menonton file Anda.

Di atas tidak teruji, tetapi itulah gagasan umum.

ghoppe
sumber
2

Anda dapat melakukannya di Automator. Itu di bawah Opsi Folder dalam alur kerja automator yang saya percaya (tidak di depan Mac). Kemudian Anda cukup melampirkan script ke folder dan itu akan menyala setiap kali file ditambahkan / diubah.

MDMarra
sumber
Saya tidak bisa mengikuti. Saya baru di Automator, tetapi sejauh yang saya tahu Anda tidak dapat memilih kapan harus mengeksekusi skrip Anda, tetapi hanya apa yang harus dilakukan saat dijalankan. Ada tindakan folder di Mac OS yang dapat saya gunakan juga tetapi saya pikir AppleScript hanya memiliki tindakan "menambahkan item folder ke" tetapi tidak seperti "mengubah item folder di".
Johannes
Anda benar @Johannes. Meskipun ada tindakan folder untuk menambahkan item folder, menghapus item folder, memindahkan jendela folder, menutup jendela folder, dan membuka folder, tidak ada Aksi Folder untuk mendeteksi perubahan pada file. Anda dapat melihat ini dengan membuka kamus StandardAdditions.osax di Applescript Editor.
ghoppe