• 08-09-2009, 20:55:18
    #1
    Merhaba Arkadaşlar,

    SSH kullanımı açısından sizlerden destek istiyorum. Kolay ssh kodları gerçekten hepimiz tarafından ezberlendi. Bunun bana ve bir çok kişiye faydalı olacağını düşünyorum. Bana başlıkta yazdığım gibi sed , awk , print , grep kullanımını açıklar mısınız ? veya aklınıza gelen bu tarzda komutları bizimle topicte paylaşır mısınız?

    Teşekkürler...
  • 13-09-2009, 18:21:49
    #2
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Merhaba
    Sorunuz gerçekten yanıtlanması uzun sürecek bir soru. Ayrıca %100 kapsamlı yanıt vermenin gerçekten zor olacağı bir konu. Ben sizin için biraz araştırma yaptım. Bir kaç ingilizce makaleyi birleştirerek Türkçeleştirdim. Bunları sizinle paylaşacağım. Bu makaleleri ayrı ayrı kendi sitemde yayınladım. Alıntı yaparak bunları sizinle paylaşıyorum.Umarım işinize yararlar. Sizde bunları daha geniş bir şekilde parametlerini kullanarak bizimle paylaşırsınız.
    Öncelikle sed komutundan başlıyalım.
    Alıntı
    Merhaba,
    sed kodunun basitce kullanimini sizinle paylasacagim. Bunun icin ingilizce bir makaleyi turkceye cevirdim. Size burda verecegim bilgiler temel bilgiler olacaktir. Bunun ekleriyle kullanabilecegimiz bir cok konu vardir. Fakat oncelikle temel olarak girisimizi yapalim. Insallah ileride tamamini ben yada baska bir arkadasimiz paylasir.
    Dersimize baslamadan once ornek parcamizi verelim. Ileride bu parca isimize yarayacaktir.Bu parca poem.txt icinde yer alsin.
    Ornek Parca :
    Mary had a little ham
    Mary fried a lot of spam
    Jack ate a Spam sandwich
    Jill had a ham spamwich

    Konunun yogunlasacagi 2 adet komutu sizlere verelim. Asagida aciklanan aslinda bu iki komutun mantigindan ve kullanim alanlarindan baska bir sey degil.
    -------------------
    Donusturucu sed
     's/eskiparca/yeniparca/g' dosya
    Silici sed
     'baslangic,bitisd' dosya
    ------------------
    Donusturucu "sed” ile ilgili alistirma yapalim. Ornek olarak poem.txt dosyamizin icindeki “lamb” kelimesini “hum” ile degistirelim.
    Bunun icin asagidaki kodlari inceleyiniz:
    sed 's/lamb/ham/g' poem.txt
    Kod da verilen “s” nin anlamini cevirici olarak, “g” nin anlamini da evrensel degistirici olarak dusunebiliriz. Ayrıca "g" (her satırın yalnızca ilk olayini değiştirmek için) takisini yazmayabiliriz veya yerine (her satırda ilk X olaylarini değiştirmek için bir sayı belirtebiliriz.).
    Simdide silici sed icin biraz alistirma yapalim. Ilk basta size ornek olarak verdigimiz ve baslangic - bitis olarak yazdigimiz terimler aslinda eslesmesi gereken satirlardir.
    Hatirlayalim : Silici sed
    'baslangic,bitisd' dosya
    Ornegin bizim klasik poem.txt mizde 2. Ve 3 satirlari kapsayalan bir silici sed yazalim.
    sed '2,3d' poem.txt
    Mary had a little lamb
    Jill had a lamb spamwich
    Bu ornekte ise silici sed 1. Satirdan baslayacak icinde Jack ismi gecen ( o satir ) dahil son satira kadar silecektir.
    sed '1,/Jack/d' poem.txt
    Bir çok kişi sed komutunu iki değişkeni değiştirmek için kullanır. Fakat ben sed i bazı ifadeleri bulup silmek içinde kullanmak istiyorum. Bunun anlamı siz bunu eşleştirmek içinde kullanabilirsiniz. Grep gibi.Ancak muhtemelen bunun gibi birşey yapmaya gerek olmayacaktir..
    Birinci satırdan son satıra kadar "lamp" kelimesini "ham" ile değiştirmek için ve çıktıyı yeni bir dosyaya yazmak için aşağıdaki komutları uygulayınız.
    Sonuç çıktısını verene kadar ekranda herhangi bir işlem yapmayınız. Şayet new.file in içeriklerine bakarsanız bu satırları göreceksiniz.
    sed 's/lamb$/ham/g' poem.txt > new.file
    Saygilarimla...
    Abdullah CINAR
    Sırada Awk - Print
    Alıntı
    Merhaba,
    Awk kodu aslında programlamada veri dosyalarındaki dil dönüşümleri için kullanılmaktadır. Biz bu metnimizde awk nın " print " ayarlarıyla ilgili yoğunlaşacağız. Aslında kafa karıştırıcı şeyleri awk ile kolayca yapabiliriz .Awk kodunun genel kullanımı :
    awk <pattern> '{print <stuff>}' <file>
    Bu durumda, stuff metnin kombinasyonu olacaktır. Bu durumda özel değişkenler çıktıda gözükecektir.. Belki bu bir yada iki matematik operatörünün yapabilecekleriyle eşit bir işlem. Açıkcası bu kısım tamamen mantıksız gibi gelebilir. Aslında banada mantıksız gelen bir kısım. Keşke eklemeseydim diye düşünmemiş değilim. Neyse biz örneklere bakalım. Örneklerde emin olun daha iyi anlayacağız. Girişler her zaman saçma olur.
    Haydi bir dosya oluşturalım. Adı words.data olsun. Ve içeriği aşağıdaki satırlardan ibaret olsun.
    nail hammer wood
    pedal foot car
    clown pie circus
    Dosya içeriğimiz çok düzgün olmadı. Biraz düzenlemeye ihtiyacımız var. Şimdi tam olarak yapmak istediğimiz şey 1. Kelime’nin önüne “Hit the” 1. Kelimenin arkasına ise “with your” eklemek..Kodumuzu veriyorum. İnceleyelim:
    awk '{print "Hit the",$1,"with your",$2}' words.data
    Bu kodu uyguladıktan sonra tekrar bakalım. Words.data’ya :
    Hit the nail with your hammer
    Hit the pedal with your foot
    Hit the clown with your pie
    Şimdi ise bu awk kodunu sayısal olarak kullanımı görelim. grades.data adlı bir dosya oluşturalım. İçine ise aşağıdaki metni yazalım.
    Rogers 87 100 95
    Lambchop 66 89 76
    Barney 12 36 27
    Şimdi awk ile yapabileceklerimizi sayısal olarakda görelim aynı zamanda pekiştirmek için ilk derste anlattığımız kelime aralarına kelime eklemeği görelim.
    awk '{print "Avg for",$1,"is",($2+$3+$4)/3}' grades.data
    çıktı metin:
    Avg for Rogers is 94
    Avg for Lambchop is 77
    Avg for Barney is 25
    Biraz daha açıklamak gerekirse “ Avg for “ kelimesini cümlenin başına getirdik. 2. 3. 4. Satırlarını da toplayıp 3 ‘e böldük. Tıpkı bir hesap makinası gibi. Aslında hesaplama scriptlerinde de temel mantık budur.
    Şimdiye kadar biz aslında yeterince model görmedik. Fakat Biz satırları bu işlem prosedüründen ayrı tutmak istiyorsak aşağıdaki kodlamayı inceleyelim:
    awk /^clown/'{print "See the",$1,"at the",$3}' words.data
    See the clown at the circus
    Biz burada awk kodunu girdi satırlarıyla inceledik. Ayrıca son bir not print ve pattern arasında boşluk yok. Eğer oraya boşluk koyarsak awk printin çalışmadığını düşünür.Burda size anlatılanın hepsi awk nın temel seviyesidir. Bunun yanına bir çok parametler ekliyerek bu çok daha fazla genişletilebilir. Ancak şimdilik biz temelimizi atalım. İleride inşallah benim veya başka bir bu işle ilgilenen arkadaşın makalesinde daha profesyonel kullanımlarını görürüz.
    Saygılarımla…
    Abdullah ÇINAR
    Ve Son olarak grep. Aslında Grepide kendim hazırlayacaktım. Ancak detaylı bir şekilde güzel bir makale buldum. bu bana ait değildir.
    Alıntı
    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.
    Yararlı ve güzel bir mesaj olduğunu düşünüyorum. İnşallah tüm kardeşlerimizin işine yarar.
    Saygılarımla..
    Kaynak : http://www.hostingsiteniz.com/grep-k...imi-t24.0.html
    Kaynak : http://www.hostingsiteniz.com/awk-ko...imi-t25.0.html
    Kaynak : http://www.hostingsiteniz.com/sed-ko...imi-t23.0.html
  • 14-09-2009, 06:09:38
    #3
    Kurumsal PLUS
    Nullsix adlı üyeden alıntı: mesajı görüntüle
    Merhaba Arkadaşlar,
    SSH kullanımı açısından sizlerden destek istiyorum. Kolay ssh kodları gerçekten hepimiz tarafından ezberlendi. Bunun bana ve bir çok kişiye faydalı olacağını düşünyorum. Bana başlıkta yazdığım gibi sed , awk , print , grep kullanımını açıklar mısınız ? veya aklınıza gelen bu tarzda komutları bizimle topicte paylaşır mısınız?
    Teşekkürler...
    awk dan bir örnek

    netstat -ntu

    yazar bağlı kullanıcıları görürsün..

    netstat -ntu | grep :80

    yazar sadece içersinde :80 olanları görürsün

    netstat -ntu | grep :80 | awk '{print $5}'

    yapar sadece IP kısmını görürsün

    netstat -ntu | grep :80 | awk '{print $5}' | cut -f1 -d ':'

    yapar : dahil sağ tarafını silersin listenin

    hep aynı IP lerden görünür liste çok karışır aynıları rakam olarak göstermek istersin.

    netstat -ntu | grep :80 | awk '{print $5}' | cut -f1 -d ':' | uniq -c

    yazarsın..

    Ama buda yetmez bu aynıları numara sırasına göre görmek istersin

    netstat -ntu | grep :80 | awk '{print $5}' | cut -f1 -d ':' | uniq -c | sort -n

    yazarsın..

    artık ipleri en çok bağlantı açandan en az açana doğru görürsün..

    ama senin için önemli olan 10 dan fazla bağlantı açan iplerdir

    10 dan daha az bağlantı açanları görmek istemezsin

    ozamanda bunu yazarsın

    netstat -ntu | grep :80 | awk '{print $5}' | cut -f1 -d ':' | uniq -c | sort -n | awk '$1 > 10 {print $1,$2}'

    vs.. vs.. gider bu..
  • 14-09-2009, 12:57:39
    #4
    Osman hocam cut -f1 -d ve cut -f2 -d birbirinin tersi yönlerimi siliyor ?