Linux, dosya oluşturma, değiştirme, kaldırma gibi tüm dosya sistemi olaylarını izlemek için hoş bir arayüz sağlar. Arayüz inotify
sistem çağrıları ailesidir, bu çağrıları kullanan kullanıcı alanı yardımcı programları inotify-tools
Ubuntu'daki paket tarafından sağlanır (evren deposunda bulunur). Zaten sahip değilseniz, aşağıdakileri yükleyin:
sudo apt-get install inotify-tools
inotify-tools
sağlar inotifywait
ve inotifywatch
ikililer, birincisine ihtiyacımız var.
Bu nedenle asciidoctor -q some_file
, herhangi bir .adoc
dosya değiştirildiğinde ( some_file
bununla değiştirilecektir) komutu çalıştırmak istiyorsunuz , eğer .adoc
dosyalarınız dizinde /foo/bar
varsa, saati ayarlayabilirsiniz:
inotifywait -qm --event modify --format '%w' /foo/bar/*.adoc
-q
sessiz modu etkinleştirir, inotifywait
kendisinden bilgi yok
-m
monitör modunu etkinleştirir, aksi takdirde ilk olaydan sonra çıkacaktır
--event modify
, yalnızca modify
etkinlikle, yani bir dosya değiştirildiğinde. Diğer olası değerler open
, close
vb.
--format %w
, dosya adını başka bir komuta girdi olarak kullanacağımızdan, yalnızca diğer bilgilerden ziyade değiştirilen dosya adının kullanılmasını istiyoruz
/foo/bar/*.adoc
dizin .adoc
altındaki tüm dosyalara genişletilecek/foo/bar
Şimdi yukarıdakiler, herhangi bir değişiklik yapıldığında dosya adını gösterecektir, şimdi dosya adı üzerindeki komutu çalıştırmak için (komutun STDIN üzerinden argümanlar aldığını varsayarak):
inotifywait -qm --event modify --format '%w' /foo/bar/*.adoc | asciidoctor -q
Ayrıca dizinde özyinelemeli bir saat ayarlayabilirsiniz, daha sonra grep
yalnızca istediğiniz dosyaları filtrelemek için kullanmanız gerekir . Burada saati -r
dizinde yinelemeli olarak ( ) ayarlamak ve yalnızca dosyaları filtrelemek için /foo/bar
kullanmak :grep
.adoc
inotifywait -qrm --event modify --format '%w%f' /foo/bar | grep '\.adoc$' | asciidoctor -q
Dizinleri izlerken çıktı biçimi belirleyicisi %w
dizin adına çözümlenir, bu nedenle %f
dosya adını almamız gerekir . Dosyaları izlerken %f
boş dizeye gider.
Ayrıca, inotifywait
, daemon ( -d
) modunda , her şeyi kodlayabileceğinizi ve / veya arka planda çalıştırabileceğinizi ve / veya onunla daha fazla seçenek oynayabileceğinizi unutmayın.
Ayrıca, asciidoctor
herhangi bir komutla .
man inotifywait
Daha fazla fikir edinmek için kontrol edin .