[ShellScript]Ders 12: Kod Kısaltma

Kronos

Yönetme Gücünü Elinde Bulunduran Kişi
Yönetici
Herhangi bir sistemde yada herhangi bir işte daha kısa zamanda ve daha verimli bir şekilde işleri yapmak herkesin ihtiyaç duyduğu bir şeydir. Unix/Linux sistemlerde halihazırda tasarlanmış bir çok yöntem bulunmaktadır.

* : Yıldız işareti. Sistem elemanlarından bir tanesidir. Genel olarak, olabilecek herşey anlamına gelmektedir(söz-yazı).

Şöyleki ben eğer " a* " yazarsam bunun anlamı şudur: "a" ile başlayan her herşey. "a" harfinden sonra her türlü karakter ve karakter dizisi gelebilir.

Örnek:


[alax@alax ~]$ cd ~/tux
[alax@alax tux~]$ ls
penguen.txt script
[alax@alax tux~]$ touch abc
[alax@alax tux~]$ touch abcde
[alax@alax tux~]$ touch Abcdef
[alax@alax tux~]$ touch aBCDE
[alax@alax tux~]$ ls
abc abcde aBCDE Abcdef penguen.txt script
[alax@alax tux~]$


Gördüğünüz gibi dört(4) adet dosya oluşturduk ve en son dosya isimlerini listeledik. En son listelememiz sonucunda klasör içerisindeki bütün herşey listelendi. Peki biz sadece "a" harfi ile başlayanları listelemeyi isteseydik?


[alax@alax tux~]$ ls a*
abc abcde aBCDE
[alax@alax tux~]$


Şimdi de "ab" ile başlayanları listeleyelim.

[alax@alax tux~]$ ls ab*
abc abcde
[alax@alax tux~]$


Not: Unix/Linux sistemler ve birçok programlama dillerinde küçük-büyük harf duyarlılığı bulunmaktadır. "a" ile "A" birbirinden farklıdır.

Şimdi büyük "A" ile başlayanları listeleyelim.

[alax@alax tux~]$ ls A*
Abcdef
[alax@alax tux~]$


Sonu ".txt" ile biten dosyaları listeleyelim.

[alax@alax tux~]$ ls *.txt
penguen.txt
[alax@alax tux~]$


Son olarak bir örneklendirme oluşturalım. Mesela "A" ile başlayan ve "tar.gz" ile biten dosyaları listelemek isteseydik şu şekilde olurdu.

[alax@alax tux~]$ ls A*.tar.gz


Yıldızın ne anlama geldiğini umarım anlamışsınızdır. Şimdi "a" ile başlayan ve "A" ile başlayan herşeyi silme komutunu yazalım.

[alax@alax tux~]$ rm -rf a* A*
[alax@alax tux~]$ ls
penguen.txt script
[alax@alax tux~]$


? : Soru işareti. Soru işareti ise yalnızca bir karakter anlamına gelmektedir.

Aşağıdaki örneği inceleyiniz.

[alax@alax tux~]$ touch linux.tgz linux.txz linux.tbz
[alax@alax tux~]$ ls
linux.tbz linux.tgz linux.txz penguen.txt script
[alax@alax tux~]$


Şimdi aşağıdaki örnekleri inceleyiniz. Her bir soru işaretinin yalnızca bir karakteri temsil ettiğini unutmayınız.

[alax@alax tux~]$ ls linux.t?z
linux.tbz linux.tgz linux.txz
[alax@alax tux~]$ ls linux.t??
linux.tbz linux.tgz linux.txz
[alax@alax tux~]$ ls *.t??
linux.tbz linux.tgz linux.txz penguen.txt
[alax@alax tux~]$


Şimdi lütfen "linux" ile başlayan bütün dosyaları siliniz.

Boşluk karakteri : Bazen dosya/klasör isimleri yada benzeri bir yazım kullanımında dosya/klasör isimleri boşluk harfi içerebilir, bu gibi durumlarda eğer gerekli önlem alınmaz ise hata ile karşılaşırsınız.

Şimdi "Merhaba Dünya" adında bir adet dosya oluşturalım.

[alax@alax tux~]$ touch Merhaba Dünya
[alax@alax tux~]$ ls
Dünya Merhaba penguen.txt script
[alax@alax tux~]$


Gördüğünüz gibi biz "Merhaba Dünya" adında bir adet dosya oluşturmak istedik, fakat "Dünya" ve "Merhaba" adında iki adet birbirinden bağımsız dosya oluştu. Bunun sebebi Unix/Linux sistemlerde kullandığımız komutlar, verilen parametreleri ayırma için boşluk karakterini seçerler. Dolayısıyla yukarıdaki örneğimizde "touch" komutu "Merhaba" ve "Dünya" isimlerini ayrı ayrı işleme aldı, çünkü onların bütün bir isim olduğunu komuta anlatmadık.

Bunun çözümü ise (") çift tırnak işareti kullanmaktır. Tabiki tek tırnakta kullanabiliriz fakat tek tırnak herzaman için iyi bir seçim değildir. Bu yüzden bu ve buna benzer durumlarda çift tırnak kullanmanızı tavsiye ediyoruz. İleriki konularda bu durum daha iyi anlaşılacaktır.

Şimdi son iki oluşturduğumuz dosyayı silelim ve örneğimizi tekrardan uygulayalım.


[alax@alax tux~]$ rm -rf Dünya Merhaba
[alax@alax tux~]$ touch "Merhaba Dünya"
[alax@alax tux~]$ ls -l
total 4
alax alax 0 Oct 23 18:00 Merhaba Dünya
alax users 0 Oct 21 21:41 penguen.txt
alax alax 4096 Oct 21 00:22 script
[alax@alax tux~]$



Gördüğünüz gibi istediğimiz sonucu elde ettik.
 
türk porno porno porno izle eryaman escort diyarbakır escort
Üst