Bir dosya değiştirildiğinde bir şeyler yapın


10

Bir LaTeX belgesi yazarken, sık sık derlemek için editörümde F6 tuşuna basarken kendimi buluyorum. Ben Sass kullandığınızda Veya, sık sık tip makebenim dönüştürmek .scssINTO .css.

Şimdi, makeher dosya değişikliğinde makinenin kirli işi yapmasına veya başka bir şeye izin vermesini istiyorum .

Şimdiye kadar bir terminal penceresini açık tuttum ve yukarı ok ve geri döndüm. Ya da kullandım watch make, ama bu garip bir çözüm gibi görünüyor.

Linux'ta belirli bir dosya değiştiğinde bir şeyler yapmanın güzel bir yolu var mı?

Yanıtlar:


4

Inotify araçlarının birinotifywait parçasını arıyorsunuz . Projenin sitesinde nasıl kullanılacağına dair bazı örnekler var, ancak basit bir yaklaşım,

while true; do inotifywait code.cpp -e modify; make; done

anahtar kısmı,

inotifywait code.cpp -e modify

Bu komut code.cppdeğiştirilene kadar bekleyecek ve çıkacaktır. Sonsuz döngüye koyun ve ardından makeher değişiklikten sonra sürekli olarak yeniden oluşturulmasına neden olun.

Değişiklik yapmayı beklemenin yanı sıra, oluşturma, silme, erişim, açma, kapatma ve daha fazlasını bekleyebilirsiniz. Nasıl kullanılabileceğine dair bazı fikirler için proje örneklerine bakmanızı ve inotifywait kılavuz sayfasını tavsiye ederim .


Tam da aradığım şey bu!
Martin Ueding,

1

Zaman olayları yerine dosya sistemi olaylarına yanıt veren cron benzeri bir paket olan incron'a bir göz atın . Paket , iyi bilinen / çift ​​cron'a benzer bir daemon ( incrond) ve bir tablo manipülatöründen ( incrontab) oluşur .crondcrontab

İncron ile, makebelirli dosyalar ve / veya dizinler her değiştiğinde kolayca çalıştırmayı düzenleyebilirsiniz .


Bu bir yandan biraz aşırıya kaçmış gibi görünüyor, ancak diğer yandan sadece doğru araç. Kontrol etmem gerekecek, belki her programlama oturumu için etkinleştirip devre dışı bırakabilirim.
Martin Ueding

0

Aksine watch make, nasıl watch ls? Sonra sadece makezaman damgası değiştiğinde.


Zaman damgalarını zaten kontrol edin, bu yüzden zamanı kontrol etmek oldukça mantıklı değildir ve daha sonra zamanı tekrar kontrol etmesine izin verin.
Martin Ueding

Doğru ama koşu yapmak ls çalıştırmak daha pahalıdır.
Scott C Wilson

1
Ve benim dosyam bu single için sadece iki satırsa .tex? Bunun bir lsayrıştırıcı yazmaya değer olacağını düşünüyor musunuz ?
Martin Ueding
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.