Linux menyediakan antarmuka yang bagus untuk memantau semua peristiwa sistem file seperti membuat, memodifikasi, menghapus file. Antarmuka adalah inotify
kumpulan dari panggilan sistem, utilitas userspace yang memanfaatkan panggilan ini disediakan oleh inotify-tools
paket di Ubuntu (tersedia di repositori semesta). Jika Anda belum memilikinya, instal dengan:
sudo apt-get install inotify-tools
inotify-tools
menyediakan inotifywait
dan inotifywatch
binari, kita perlu yang pertama.
Jadi Anda ingin menjalankan perintah asciidoctor -q some_file
ketika .adoc
file apa pun dimodifikasi ( some_file
akan diganti dengan itu), jika demikian dengan asumsi .adoc
file Anda ada di direktori /foo/bar
, Anda dapat mengatur arloji:
inotifywait -qm --event modify --format '%w' /foo/bar/*.adoc
-q
mengaktifkan mode senyap, tidak ada info dari inotifywait
dirinya sendiri
-m
mengaktifkan mode monitor, jika tidak maka akan keluar setelah acara pertama
--event modify
, Kami hanya tertarik pada modify
acara yaitu ketika file diubah Nilai-nilai lain yang mungkin termasuk open
, close
dll.
--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/*.adoc
akan diperluas ke semua .adoc
file di bawah /foo/bar
direktori
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 grep
untuk memfilter file yang diinginkan saja. Di sini, setel arloji secara rekursif ( -r
) pada direktori /foo/bar
dan gunakan grep
untuk memfilter hanya .adoc
file:
inotifywait -qrm --event modify --format '%w%f' /foo/bar | grep '\.adoc$' | asciidoctor -q
Saat menonton direktori, specifier format output %w
menyelesaikan ke nama direktori, jadi kita perlu %f
mendapatkan nama file. Saat menonton file, %f
akan menyelesaikan string kosong.
Perhatikan bahwa, Anda juga dapat menjalankan inotifywait
dalam -d
mode daemon ( ), Anda juga dapat skrip semuanya, dan / atau berjalan di latar belakang, dan / atau bermain dengannya lebih banyak pilihan lain.
Juga, Anda dapat mengganti asciidoctor
dengan perintah lain pilihan Anda, jika Anda mau.
Periksa man inotifywait
untuk mendapatkan lebih banyak ide.