Linux'ta Dosya Değiştiğinde Komut Nasıl Yürütülür?
Yayınlanan: 2022-04-04Bir çalışma dizinindeki herhangi bir dosya değiştiğinde ve yeni dosyalar oluşturulduğunda Linux komutlarını nasıl çalıştıracağınızı öğrenmek istiyorsanız doğru yere geldiniz.
Linux'ta, komutları belirli zamanlarda çalışacak şekilde programlamak için cron
kullanabilirsiniz.
Ancak, bir dosya her değiştirildiğinde veya bir dizine yeni bir dosya eklendiğinde çalıştırılacak komutlara ihtiyacınız olursa ne olur?
Bu aynı zamanda kolayca elde edilebilir ve bunu gerçekleştirmek için bazı komut satırı araçları vardır.
Başlayalım!
saat yöneticisi
watchexec
, belirli bir çalışma dizinini izleyen ve dosya güncelleme veya yeni dosya oluşturma gibi herhangi bir değişiklik algıladığında bir komut yürüten kullanışlı ve bağımsız bir araçtır.
Özellikler
-
xargs
(genişletilmiş argümanlar) içeren karmaşık bir komut satırı gerektirmez. - Geçerli dizindeki ve tüm alt dizinlerdeki değişiklikleri gerçek zamanlı olarak kontrol eder.
- Bir dil çalışma zamanına gerek yoktur ve belirli bir dile veya ekosisteme bağlı değildir.
- .gitignore ve .ignore , varsayılan olarak hangi dosyaların bildirimleri yoksayacağına karar vermek için kullanılır.
- Proses grupları, çatallama programlarını takip etmek için kullanılır.
- Belirli bir uzantıya sahip dosyaların izlenmesi desteklenir.
- OS X, Linux ve Windows ile uyumludur.
- Olayları küreye dayalı olarak filtreleme ve yok sayma (Kısmen aynı dosya adlarını bulmak için dosya arama kalıpları mümkündür.
watchexec'in kurulumu
watchexec
aracını kolayca kurmak için, aşağıdaki bağlantıyı terminale veya bir kabuk istemine yapıştırın ve enter tuşuna basın.
Linux ve macOS
curl -sS https://webinstall.dev/watchexec | bash
Başarılı kurulumdan sonra, yol ekranda görüntülenecektir. Benim durumumda, bu araç /root/.local/bin
kuruldu.
┌──(rootkali)-[~] └─# curl -sS https://webinstall.dev/watchexec | bash Thanks for using webi to install 'watchexec@stable' on 'Linux/x86_64'. Have a problem? Experience a bug? Please let us know: https://github.com/webinstall/webi-installers/issues Lovin' it? Say thanks with a Star on GitHub: https://github.com/webinstall/webi-installers Found /root/Downloads/webi/watchexec/cli-v1.18.9/watchexec-1.18.9-x86_64-unknown-linux-musl.tar.xz Extracting /root/Downloads/webi/watchexec/cli-v1.18.9/watchexec-1.18.9-x86_64-unknown-linux-musl.tar.xz Installing to /root/.local/opt/watchexec-vcli-v1.18.9/bin/watchexec Installed 'watchexec vcli-v1.18.9' as /root/.local/bin/watchexec
Ve kurulumdan sonra .local/bin
deposuna gidin ve bu komutları kullanarak dosyanın orada olup olmadığını kontrol edin.
cd .local/bin ls
Sonraki adım, watchexec aracını kullanmak için yolu dışa aktarmaktır.
export PATH="/root/.local/bin:$PATH"
Çalıştırmak için, terminalde root kullanıcısı olarak watchexec
yazmanız yeterlidir. watchexec aracıyla hangi bayrakların ve seçeneklerin kullanılabileceğini görmek için bu komutu kullanın.
watchexec --help
Örnek Örnek Komutlar
- Bu dizinde/alt dizinde herhangi bir dosya değiştiğinde
ls -la
arayın. Bu komut, herhangi bir değişiklik algıladığında dizinde bulunan tüm dosyaları gösterir.
watchexec -- ls -la
- Geçerli dizindeki python, js, CSS veya Html uzantılı dosyalardan herhangi biri değiştiğinde, komutu çalıştırın. Burada istediğiniz komutu iletebilirsiniz. Dosya uzantıları virgülle ayrılmalıdır.
watchexec --exts py,js,css,html <command>
-
lib
veyasrc
içindeki herhangi bir dosya değiştiğinde komutu çalıştırın. “-w” seçeneği sistemdeki belirli bir dosya veya dizini izler.
watchexec -w lib -w src <command>
- Geçerli dizindeki (ve tüm alt dizinlerdeki) herhangi bir dosya değiştiğinde herhangi bir hizmeti arayın/yeniden başlatın.
watchexec -e html -r tor watchexec -e js,py -r mysql
Burada “-r” seçeneği, sistemde çalışıyorsa işlemi veya hizmeti yeniden başlatır.

Daha fazla watchexec kullanım örneği için resmi GitHub deposunu ziyaret edebilirsiniz.
giriş
entr
, belirli bir dizinde herhangi bir değişiklik meydana geldiğinde rastgele komutlar çalıştırmak için basit ve mükemmel bir komut satırı yardımcı programıdır.
“ entr ”, Event Notify Test Runne r anlamına gelir. Bu araç, hızlı geri bildirim ve otomatik test yapma hedefiyle oluşturulmuştur.
Kurulum
entr
, Linux dağıtımında önceden yüklenmiştir. Eksik olması durumunda, manuel olarak yüklemeniz gerekir.
Bu aracın kullanımı basittir ve aşağıdaki komutla kurulabilir.
sudo apt-get install entr
Veya resmi Git deposunu klonlayarak da yükleyebilirsiniz.
git clone https://github.com/eradman/entr.git
Ardından, bu dizine gidin ve aşağıdaki komutları kullanarak gereksinimleri yükleyin.
./configure make test make install
Kullanılabilir derleme seçeneklerini görmek için ./configure -h
çalıştırın.
Örnek Örnek Komutlar
entr
komutu için mevcut seçenekleri ve argümanları görmek için. Aşağıdaki komutu kullanın.
man entr
Bu komut, entr
komutunun kullanım kılavuzunu görüntüler.
NAME entr — run arbitrary commands when files change SYNOPSIS entr [-acdnprsz] utility [argument /_ ...] DESCRIPTION A list of files provided on standard input, and the utility is executed using the supplied arguments if any of them change. entr waits for the child process to finish before responding to subsequent file system events. A TTY is also opened before entering the watch loop in order to support interac‐ tive utilities. The arguments are as follows: -a Respond to all events which occur while the utility is running. Without this option, entr consolidates events in order to avoid looping. This option has no effect in conjunction with the -r flag. -c Clear the screen before invoking the utility specified on the command line. Specify twice to erase the scroll back buffer. -d Track the directories of regular files provided as input and exit if a new file is added. This option also enables directories to be specified explicitly. If specified twice, all new entries to a directory are recognized, otherwise files with names beginning with '.' are ig‐ nored. -n Run in non-interactive mode. In this mode entr does not attempt to read from the TTY or change its properties. -p Postpone the first execution of the utility until a file is modified. Manual page entr(1) line 1 (press h for help or q to quit)
- Çalışma dizininde herhangi bir JavaScript dosyası değiştiğinde MySQL sunucusunu başlatmak ve otomatik olarak yeniden yüklemek için. Değişiklikler dosyaya her kaydedildiğinde,
entr
MySQL sunucusunu yeniden yükler.
ls *.js | entr -r mysql
- Bir web sunucusunu otomatik olarak yeniden yüklemek veya sunucu çıkarsa sonlandırmak için.
$ ls * | entr -rz ./httpd
entr
komutuyla ilgili daha fazla ayrıntı ve örnek için resmi GitHub deposunu ziyaret edebilirsiniz.
Son sözler
Umarım bu makaleyi, belirli bir dizindeki herhangi bir dosya değiştiğinde ve yeni dosyalar oluşturulduğunda Linux komutlarının nasıl çalıştırılacağını öğrenmede çok faydalı bulmuşsunuzdur.
Linux'ta dosya ve dizinlerin nasıl kaldırılacağını öğrenmek de ilginizi çekebilir.