İçerik Menüsü

18.Doküman

Joker Karakterler

Konu Etiketleri

wildcard , joker Karakter , globbing

Joker Karakterler (wildcards)

Bu kavram sizlere kesinlikle yabancı değil, daha önceki kısımlarda defaatle kullanmış ve joker(wildcard) karakterlerinin az da olsa işlevini görmüştük. Bu kısımda da bu konu hakkında bilgi sahibi olacağız.

joker (wildcard)

Linux kullanımında işimizi konsoldan yürüteceğimiz zaman bir komutun tek seferde birden fazla nesneyi etkilemesini yani kapsamasını isteyebiliriz. Örneğin bir dizindeki dosyaların tamamını silmek istiyoruz diyelim; bu iş için aşağıdaki gibi tüm dosya adlarını komut satırına yazmak çok zahmetli ve gereksiz olacaktır.

Yukarıdaki kullanımın yerine joker karakter(wildcard) desteğini kullanmak bizlere çok fazla avantaj sağlar. Ayrıca gördüğünüzde şaşırmayın, kimi kaynaklarda joker karakterler(wildcards) "globbing" olarak da adlandırılmaktadır.

Bahsi geçen joker karakterler ve kullanım alanları aşağıdaki gibidir;

* : Anlamı * olan yere herhangi bir şey gelebileceğidir.

Örneğin "dosya" ismiyle başlayan tüm belgeleri tek seferde silmek için komutu rm dosya* şeklinde kullanabilirim.

Ayrıca bu yıldız (asterix)* işaretinin farklı kullanım şekilleri de var. Farklı kullanımların açıklaması ile devam edelim.

Herhangi bir komutu, örneğin listeleme işlevinde olan ls komutunu ls dosya* şeklinde kullanırsak komut yıldız (asterix) * işaretinden önce yazmış olduğumuz "dosya" ismi ile başlayan tüm her şeyi kapsar.

Aynı şekilde yıldız (asterix) * işaretinden sonra bir ifade belirtirsek de komut o ifade ile bitenleri kapsayacak şekilde çalışır.

? : Herhangi bir tek karakterle eşleşir.

Karakterin kullanımına örnek olarak. Diyelim ki dizin içerisinde hem "index_page" hem de "index-page" şeklinde birbirine yakın yazılışlara sahip iki dosyamız var. Yani başlangıç ve bitiş isimleri aynı ancak aradaki işaretler farklı. İşte böyle bir durumda hem _ işaretini hem de - işaretini karşılayacak olan soru işareti ? joker karakterini kullanabiliriz.

Çıktılarda da görüldüğü gibi ? karakteri dosya isimlerinin arasında yer alan - ve _ işaretini de karşılayarak ls -l index?page şeklindeki komut ile çıktıya her ikisini de basmış oldu.

[] : ? karakterine benzer olmakla birlikte daha çok hedefe odaklı çalışır.

[] karakterinin kullanımı, iki köşeli parantez arasına ulaşmak istediğiniz hedefteki ayırt edici karakterli yazmak üzerinedir.

Örnek olması açısında "dosya" isimli belgelerden sadece sonunda 2,3,4 olanları kapsayacak bir komut olması için konsola ls -l [234] komutunu verdim.

Bir örnek daha verelim.

[Dd]osya[Aa]dı şeklinde bir belirtme; DosyaAdı, Dosyaadı, dosyaAdı, dosyaadı şeklindeki bütün isimleri kapsayacaktır. Bu sayede ilgili dosyalar için tüm küçük büyük harf kombinasyonu kolaylıkla sağlanmış olur.

Ayrıca kullanım şekillerine çok fazla örnek verilebilir ancak burada birkaç örnek daha vererek keşfi size bırakıyorum.

Not : Burada belirtilen x y z temsili değerleri ifade etmektedir !

[0-9] : 0'dan 9'a kadar olan rakamları kapsar.

[x,y,z] : belirtilen değerlerle eşleşenleri basar.

[x-z] : x ile z değerleri arasındaki karakterlerle eşleşir.

[xyz] : belirtilen değerlerle eşleşenleri basar.

[!xyz] : Belirtilen karakterlerin dışındakileri diğer tüm karakterleri basar.

[!x-z] : Verilen x ile z değeri arasındaki değerler haricindeki karakterler basar.

Temel ve en çok başvurulan joker karakterler bu şekildedir. Sizler de joker karakterler sayesinde konsoldan çalışırken oldukça pratik şekilde işlemlerinizi yerine getirebilirsiniz. Konuyu daha iyi anlamak adına mutlaka ama mutlaka kendiniz de örnek denemeler yapın.

Alıştırmalar Hakkında

Öğrendiğiniz bilgilerin kalıcı olması için mutlaka bolca alıştırma yapmalısınız.Burada belirtilen alıştırmalar dışında da kendi kendinize özellikle de zorlandığınız konularda bol bol alıştırmalar yapın. Aksi halde öğrendiğiniz bilgiler kısa sürede unutulup gidecektir. Yani gerçekten öğrenmek istiyorsanız lütfen öğrendiğinizi hissede kadar alıştırmalar yapın.

Bulunduğunuz dizinde yer alan tüm dosyaları tek seferde hepsini kapsayacak şekilde bir başka konuma taşıyın.

/etc  dizini içerisindeki "a" ifadesi ile başlayan tüm her şeyi konsoldan listeleyin.

/etc  dizini içerisindeki "a" ifadesi ile biten tüm her şeyi konsoldan listeleyin.

Masaüstü dizinine 1'den 10' a kadar "klasör" ismiyle başlayan dosya oluşturun(klasör1, klasör2,klasör3, klasör.. şeklinde) ve bu klasörlerin ilk beşini konsola bastırın.

Oluşturmuş olduğunuz klasörlerden yalnızca 2. 3. ve 5. klasörleri konsola bastırın.

Oluşturmuş olduğunuz klasörlerden yalnızca 2 ile 7 arasındaki klasörleri konsola bastırın.

Oluşturmuş olduğunuz klasörlerden 4 6 ve 8 haricindekileri konsola bastırın.

Oluşturmuş olduğunuz klasörlerden 3 ila 7 arasında olanlar haricindekileri konsola bastırın.

Geri Bildirimde Bulunun

Sizlere daha verimli bir kaynak sunabilmemiz için, uygulamada veya dokümantasyonlarda yer alan tüm hata ve eksiklerimizi bize bildirebilirsiniz.