Apakah ada cara sederhana untuk secara otomatis menjalankan perintah (Terminal) setiap kali file diubah dalam folder tertentu?
Ini harus dimungkinkan melalui baris perintah, atau aplikasi bawaan sistem, tidak ada aplikasi pihak ketiga.
Ada ide?
macos
terminal
command-line
Louis B.
sumber
sumber
Jawaban:
Simpan daftar properti seperti ini sebagai
~/Library/LaunchAgents/test.plist
:Agen dapat dimuat dengan
launchctl load ~/Library/LaunchAgents/test.plist
atau dengan logout dan kembali. Menerapkan perubahan memerlukan pembongkaran dan pemuatan daftar.Ekspansi Tilde (
~/
) berfungsi di WatchPaths secara default. EnableGlobbing menambahkan perluasan wildcard dan tilde untuk ProgramArguments, tetapi itu tidak memengaruhi Program atau WatchPaths.Jika file yang ditonton dimodifikasi dalam sepuluh detik dari doa terakhir, pesan seperti ini ditambahkan ke system.log:
Salah satu cara untuk menghilangkan pesan adalah menambahkan sesuatu seperti
sleep 10
ke akhir skrip. Mengatur ThrottleInterval ke 10 tidak membantu.Perubahan dalam subfolder dari folder yang ditonton tidak terdeteksi.
Lihat
man launchd
danman launchd.plist
untuk informasi lebih lanjut.sumber
entr (1) adalah utilitas untuk menjalankan perintah ketika file berubah. Bunyinya daftar file pada STDIN dan menggunakan kqueue (2) untuk menghindari polling.
Contoh:
sumber
Anda dapat menggunakan Tindakan Folder, yang memungkinkan Anda menjalankan skrip (Pengotomasi) setiap kali konten dalam folder berubah. Sejauh yang saya tahu, Automator memiliki templat yang memungkinkan Anda dengan mudah membuat tindakan folder baru dan melampirkannya ke folder yang diinginkan. Dan dengan menambahkan tindakan "Jalankan Shell Script", Anda seharusnya mendapatkan efek yang diinginkan.
sumber
Tindakan folder baik untuk memicu ketika file ditambahkan atau diubah.
Namun, jika definisi Anda tentang perubahan termasuk menghapus file, tindakan Folder OSX tidak mendeteksi jika file telah dihapus.
Untuk menjawab pertanyaan:
Unduh dependensi FileWatcher dari sini: https://github.com/eonist/swift-utils
Biasakan diri Anda dengan menjalankan swift di comandline: http://krakendev.io/blog/scripting-in-swift
Gunakan kode ini untuk menonton folder.
Kode:
sumber
Automator memiliki jenis alur kerja yang disebut "Aksi Folder" yang secara otomatis berjalan ketika ada sesuatu yang ditambahkan ke folder. Buat satu, lalu gunakan tindakan "Run Shell Script."
sumber
Anda mungkin ingin mencoba sesuatu seperti ini:
sumber
ls -l
perlu menangkap perubahan file juga.