Linux'ta Dosya Değiştiğinde Komut Nasıl Yürütülür?

Yayınlanan: 2022-04-04

Bir ç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 veya src 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.