husonet | Tarih: 17.06.2015
Çift yıldız ile dosya yolu işlemleri
Bir Linux komut satırı kullanıcısı iseniz büyük olasılıkla yıldız kullanımına aşinasınızdır.
Yıldız kullanımları tüm kabuklar için (bash, zsh, tcsh, vb) standart diyebiliriz. Örneğin, ls * komut dosyalarını ve geçerli dizinin hemen alt dizinleri listeler.
$ ls *
Tek yıldız ne yazıkki "özyinelemeli" tekrarlanan değildir. Hedef olarak varolduğu dizin ötesine hareket edemez. Tabiki bunun için find komutu kullanabilirsiniz. Fakat daha basit bir çözüm ** çift yıldız kullanımıdır.
Tek yıldız işareti aksine, çift yıldız kullanımı bir standart değildir. Farklı kabuklarda farklı davranışlar sergileyebilir. Bu yazımız bash kabuk kullanımına odaklanacaktır.
{reklam}
Bash için çift yıldız özelliği, ilk olarak bash4 versiyonu ile gelmektedir. Çalıştırdığınız bash versiyonun hangisi olduğunu öğrenmek için aşağıdaki komutu kullanabilirsiniz.
$ bash --version
GNU bash, version 4.3.30(1)-release (x86_64-pc-linux-gnu)
...
Çift yıldız '**' kullanmadan önce, ilk olarak globstar kabuk seçeneğini etkinleştirmeniz gerekir:
$ shopt -s globstar
Globstar etkinleştirildiğinde, dosyayolu genişleme için çift yıldız '**' kullanabilirsiniz.
ls **/test.txt
Geçerli dizinde ve alt dizinlerde ls komutu ile test.txt arması yapılır bulunduğu taktirde path bilgisiyle dosya ismi çıktı olarak döner.
Notlar
Varsayılan ayar, çift yıldız için gizli bir dosya bulunmasında yeterli değildir.
$ ls **/.htaccess
Çift yıldız ** gizli dosyalar döndürmesine izin vermek için aşağıdaki set işlemini yapabilirsiniz.
$ shopt -s dotglob