Go Hotreload - 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.goolan.
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.