Linux menyediakan antarmuka yang bagus untuk memantau semua peristiwa sistem file seperti membuat, memodifikasi, menghapus file. Antarmuka adalah inotifykumpulan dari panggilan sistem, utilitas userspace yang memanfaatkan panggilan ini disediakan oleh inotify-toolspaket di Ubuntu (tersedia di repositori semesta). Jika Anda belum memilikinya, instal dengan:
sudo apt-get install inotify-tools
inotify-toolsmenyediakan inotifywaitdan inotifywatchbinari, kita perlu yang pertama.
Jadi Anda ingin menjalankan perintah asciidoctor -q some_fileketika .adocfile apa pun dimodifikasi ( some_fileakan diganti dengan itu), jika demikian dengan asumsi .adocfile Anda ada di direktori /foo/bar, Anda dapat mengatur arloji:
inotifywait -qm --event modify --format '%w' /foo/bar/*.adoc
-qmengaktifkan mode senyap, tidak ada info dari inotifywaitdirinya sendiri
-m mengaktifkan mode monitor, jika tidak maka akan keluar setelah acara pertama
--event modify, Kami hanya tertarik pada modifyacara yaitu ketika file diubah Nilai-nilai lain yang mungkin termasuk open, closedll.
--format %w, kami hanya ingin nama file yang diubah daripada banyak info lain karena kami akan menggunakan nama file sebagai input ke perintah lain
/foo/bar/*.adocakan diperluas ke semua .adocfile di bawah /foo/bardirektori
Sekarang yang di atas akan menunjukkan kepada Anda nama file setiap kali ada modifikasi, sekarang untuk menjalankan perintah pada nama file (dengan asumsi perintah mengambil argumen melalui STDIN):
inotifywait -qm --event modify --format '%w' /foo/bar/*.adoc | asciidoctor -q
Anda juga dapat mengatur arloji rekursif pada direktori, yang kemudian perlu Anda gunakan grepuntuk memfilter file yang diinginkan saja. Di sini, setel arloji secara rekursif ( -r) pada direktori /foo/bardan gunakan grepuntuk memfilter hanya .adocfile:
inotifywait -qrm --event modify --format '%w%f' /foo/bar | grep '\.adoc$' | asciidoctor -q
Saat menonton direktori, specifier format output %wmenyelesaikan ke nama direktori, jadi kita perlu %fmendapatkan nama file. Saat menonton file, %fakan menyelesaikan string kosong.
Perhatikan bahwa, Anda juga dapat menjalankan inotifywaitdalam -dmode daemon ( ), Anda juga dapat skrip semuanya, dan / atau berjalan di latar belakang, dan / atau bermain dengannya lebih banyak pilihan lain.
Juga, Anda dapat mengganti asciidoctordengan perintah lain pilihan Anda, jika Anda mau.
Periksa man inotifywaituntuk mendapatkan lebih banyak ide.