Linux'un en popüler komutu - grep
Unix'in en popüler komutu açık ara "grep"tir.Bazıları bunu tartışsada birkez kullanmaya başladınız mı, bu komut size tanrının bir hediyesi olarak gözükecek. Grep'in açılımı ,büyük bir kesime birşey ifade etmese de, "evrensel düzenli ifade yazıcısı"dır (Global Regular Expression Printer). Daha açıklayıcı olmak gerekirse grep , verilen bir yazıdan belirli kriterler dahilinde parçalar çıkarır. Basitçe , grep bir şablon girmenizi , ardından yine sizin belirleyeceğiniz bir metinde, bu şablona uygun yazıları arar. Belirlenen şablona uygun tüm satırları listeler. Grep iki türlü kullanılabilir - tek başına veya borularla (pipe)
Tek başına kullanmak
$ grep '12.00' /home/david/backup/log.txt
Bu komut basit olarak grep in nasıl kullanılabileceğini gösteriyor.(Metin dosyalarının uzantısının .txt olması gibi bir zorunluluk yok).Yukarıdaki komut içinde 12.00 bulunan tüm satırları listeler.
Örneğin bu komut , 12.00 da yapılmış tüm backupların bulunması için kullanılabilir (Tabii içinde zamanların olduğu log.txt dosyasının olması koşuluyla)
$ grep -v '12.00' /home/david/backup/log.txt
Bu komutla ise içinde 12.00 bulunduran satırlar dışındaki tüm satırları listeler.
$ grep -l 'delay' /code/*.c
Bu komut /code dizininde .c uzantılı dosyalardan içinde "delay" yazısı bulunanların adlarını listeler. Bununla sadece dosya isimleri listelenir(Q:Yani satırlar listelenmez..)
$ grep -w '\<bay' *
$ grep -w 'watch\>' *
Bu iki komut aramayı biraz daha derinleştirir.İlk komur "bay" ile başlayan kelimelerin olduğu satıları , ikinci komut ise "watch" ile biten kelimelerin olduğu satırları arar.
-
Borularla kullanım
$ ls -l | grep rwxrwxrwx
Bildiğiniz gibi "ls -l" komutu dizin içeriğini listeler. "grep rwxrwxrwx" kısmı ise bize yazma,okuma,çalıştırma izinlerinin kullanıcı,grup,diğerleri için verildiği dizinleri listeler. Böylece tüm dizinleri görmektense sadece bu izinlerin olduğu dizinleri görürüz. (Aslında sadece metin araması yapıyoruz. "ls -l" nin çıktısını grep komutuna yönlendirerek süzgeçten geçiriyoruz)
Grep'in çıktısı diğer programlara şöyle yönlendirilir :
$ du | grep 'mp3' | more
Bu komutun ne yaptığını anlamışsınızdır...(Q:Ama ben en aşağıda açıkladım)
$ grep ` ^ #` /home/david/script1 | more
Bu komut /home/david/script1 dosyasından '#' ile başlayan satırları gösterir. '^#' bize , #'in ilgili satırın ilk karakteri olması gerekliliğini anlatır."more" kısmıda , çıktının çok uzun olması durumunda sayfalar halinde gösterilebilmesi içindir.
$ grep -v ` ^ [0-9]` /home/david/backup/log.txt | more
Bu komut , /home/david/backup/log.txt dosyasında ilk karakteri 0-9 arasındaki sayılar olan satırların dışındaki satırları listeler. More yine çıktıyı sayfalara bölmek için kullanılır.
Önemli: şablon ifadelerinin tekli tırnak ile kapatılması (yukarıdaki örneklerde olduğu gibi) ,yorumlayıcının doğru çalışması için önemlidir.
Grep için bazı önemli parametreler
-v
komutun davranışını tersine çevirir. Örneğin , şablona uygun olanları göstermesi gerekirken uymayanları listeler.
-c
Standart raporlamayı (Q:yani satırların hepsini göstermeyi) keser ve sadece şablona uyan satırların sayısını gösterir.
-i
Arama sırasında büyük/küçük harf eşleştirmesi yapmaz
-w
Şablonun başka bir kelime içinde olmayıp , kendi başına bir kelime olup olmadığını denetler. Böylece , "bay" kelimesi için arama yaptığınızda "baywatch" ile ilgili satırlar ekrana gelmez.
-l
Şablona uygun satırların bulunduğu dosya adlarını listeler.
-r
parametreden sonra verilen dizinin ,alt dizininlerinde de verilen şablona uygun arama yapar. (recursive)
Bu belgenin ,grep'e başlamanıza yardım ettiğini umarım. Grep , Linux'a diğer OSler karşısında avantaj kazandıran bir araç. Grep'i diğer araçlarla verimli kullanmak , kullanıcıya Unix'te büyük bir güç verir.
Q:
du komutu ,dosya boyutlarini gosterir
-h (human readable format) parametresi ise boyut bilgilerini daha anlasilir hale getirir(normalde KB cinsinden).Şimdi bir deneme yapalım.
knoppix@ttyp0[knoppix]$ cd //
knoppix@ttyp0[//]$ cd mnt
knoppix@ttyp0[mnt]$ cd hda5
knoppix@ttyp0[hda5]$ ls
1S0z Pr0gz V1dz
1c0nZ RECYCLER WallPap3Rz
1maG3Z Spe3chZ jackass.the.movie.dvdrip.divx-glorious.avi
DocZ System Volume Information mp3
L3ssonZ Th1ngZ
knoppix@ttyp0[hda5]$ du -h | grep 'mp3' | more
41M ./mp3/01-DANCE AROUND The WORLD/Disc One
44M ./mp3/01-DANCE AROUND The WORLD/Disc Two
84M ./mp3/01-DANCE AROUND The WORLD
68M ./mp3/02-TECHNO MILLENNIUM/Disc One
69M ./mp3/02-TECHNO MILLENNIUM/Disc Two
137M ./mp3/02-TECHNO MILLENNIUM
69M ./mp3/03-CLUB IBIZA/Disc One
70M ./mp3/03-CLUB IBIZA/Disc Two
138M ./mp3/03-CLUB IBIZA
65M ./mp3/04-TRANCE NON-STOP
64M ./mp3/05-MINISTRY ANNUAL 2000/Disc One
65M ./mp3/05-MINISTRY ANNUAL 2000/Disc Two
129M ./mp3/05-MINISTRY ANNUAL 2000
68M ./mp3/06-Paul Oakenfold - Travelling/Disc One
68M ./mp3/06-Paul Oakenfold - Travelling/Disc Two
136M ./mp3/06-Paul Oakenfold - Travelling
57M ./mp3/Depeche_Mode_all/DM 81 Speak And Spell
38M ./mp3/Depeche_Mode_all/DM 82 A Broken Frame
46M ./mp3/Depeche_Mode_all/DM 83 Construction Time Again
48M ./mp3/Depeche_Mode_all/DM 84 Some Great Reward
51M ./mp3/Depeche_Mode_all/DM 86 Black Celebration
58M ./mp3/Depeche_Mode_all/DM 87 Music For The Masses
39M ./mp3/Depeche_Mode_all/DM 89 (Live) 101/Disc A
50M ./mp3/Depeche_Mode_all/DM 89 (Live) 101/Disk B
88M ./mp3/Depeche_Mode_all/DM 89 (Live) 101
44M ./mp3/Depeche_Mode_all/DM 91 Violator
44M ./mp3/Depeche_Mode_all/DM 93 Songs Of Faith And Devotion
54M ./mp3/Depeche_Mode_all/DM 97 ULTRA
43M ./mp3/Depeche_Mode_all/DM 98 The Singles 85-98/CD1
47M ./mp3/Depeche_Mode_all/DM 98 The Singles 85-98/CD2
89M ./mp3/Depeche_Mode_all/DM 98 The Singles 85-98
1.5M ./mp3/Depeche_Mode_all/IMAGES
23M ./mp3/Depeche_Mode_all/MLG 89 Counterfeit e.p
636M ./mp3/Depeche_Mode_all
584M ./mp3/Dj. Alex Techno Part 1 - Mp3
73M ./mp3/DJ_TOP_40_(CD1)
73M ./mp3/DJ_TOP_40_(CD2)
53M ./mp3/EARTH WIND&FIRE.THE_PROMISE
63M ./mp3/FUTURE_TRANCE_(CD1)
65M ./mp3/FUTURE_TRANCE_(CD2)
635M ./mp3/Karisik_Pop
823M ./mp3/mixed
78M ./mp3/soul_saucee
3.7G ./mp3
knoppix@ttyp0[hda5]$
Görüldüğü gibi du komutunun çıktılarından grep yardımıyla "mp3" olanlılarını ayırdık.Gerçekten kullanışlı.
Not alıntıdır.