entr
kullanımıentr
sizin dosya değiştiğinde bir komutu tekrar çalıştırmanızı sağlayan bir araçtır. Bu araçla ekstra bir şeye ihtiyaç duymadan yazılım projelerimize ekstra bir pakete/kütüphaneye ihtiyaç duymadan hotreload özelliği ekleyebiliriz.
Basitçe bunun için şu komutu kullanabiliriz: ls *.go | entr -r go run .
. Bu komut çalışma dizinimiz içindeki .go uzantısı ile biten bir dosyanın değişmesi sonucunda go run .
komutunu çalıştıracak. Eğer iç içe dizinlerden oluşan bir projeniz varsa find . | grep '\.go$' | entr -r go run .
daha doğru olacaktır. Bu komut geçerli dizin ve alt dizinleri içerisindeki herhangi .go uzantısı ile biten bir dosyanın değişmesi sonucunda go run .
komutunu çalıştıracaktır.
find . | grep '\.go$' | entr -r go run .
komutunu biraz daha açarsak;
find .
: Geçerli dizin altındaki bütün dosyaları arar/listeler.grep '\.go$'
: Sonucun içinden verilen pattern/expression’a göre filtreleme yapar. Bu komuttaki pattern '\.go$
‘i daha fazla açarsak; \.
, normalde regular expressionlarda .
hepsi demek ama başına \
ekleyerek bunun hepsi demek değil sadece nokta demek olduğunu söylüyoruz. go$
kısmına gelirsek eşleşme go ile olmalı ve $
ile cümlenin sonuna geldiğimizi velli ediyoruz. Yani \.go$
nun anlamı sonu .go
olan.entr
hakkında daha detaylı bilgi için man sayfasına bakabilirsiniz.
Regular expression hakkında daha fazla bilgi/açıklama ve denemeler yapabilmek için regex101 sitesine göz atabilirsiniz.
Shell kullanmada yeniyseniz komutları anlamak için explain shell sitesini öneririm.