Pythontr

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