Shell Scripting

Köstebek-02

Yaşayan Forum Efsanesi
6 May 2008
15,580
45
Köstebek
[FONT=Verdana, Arial, Helvetica, sans-serif]1 Giriş[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]Bu dokuman kabuk programlamayı tanıtım yazısıdır. Bu eksiksiz veya güvenilir bi kaynak anlamına gelmez ama aynı ifade ile ben ne hakkında konuştuğumun da oldukca farkındayım.. bu dokumandaki tüm örnekler aksi belirtilmedikçe bash syntax ı kullanır. Eğer burda bir script den bahs edersem bu scripti dokumanın sonundaki örnekler kısmına eklemeye çalışacağım.[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]1.1 Shell nedir?[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]Pek çok bilgisayarda komut satır arayüzü vardır. Bundan dolayı siz pek çok bilgisyarda komut satırı denen bir pencere açıp bilgisayardan yapmasını istediğiniz şeyi, komut şeklinde yazarbilirsiniz . Açtığınız her pencerede sizin yazdıgınız her karakteri okuyup bilgisyarın donanımının anlayacağı gerçek komutlara çeviren bir program çalışır. Işte bu programa komut çevirici veya shell denir. DOS shell olarak command.com kullanır. Unıx sitemlerde pek çok shell var. [/FONT]

[FONT=Verdana, Arial, Helvetica, sans-serif]1.2 Shell Scripts= Kabuk Programı nedir?[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]Shell script shell de çalıştırılmak üzere komutlar topluluğu içeren bir text dosyasıdır. Bunu basit bir örneği windows .bat dosyasıdır. Gelişmiş shell ler bir script dosyasının içindeki daha fazla karmaşık veya uygun komut topluluğu nu destekler. Pek çok durumda bu script dosyasının içeriği komut satırına yazılabilir ve sonuç çalışan script le aynı olabilir. [/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]Unix sistemlerde pek çok shell ortaya çıktıkdan beri scriptler bu shell lerden herhangi biri ile yazılabilir. Ve her shell farklı syntax ve farklı yeteneklere sahip oldugundan beri her shell scripti doğru davranış gösterebilmesi için hangi shell de yorumlanacağının tanımlanması gegekmektedir. Bu tanımlam script in ilk satırında yapılır . [/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]Dosyanın ilk satırı şu şekildedir. *Shebang ve shell in tam adresi. (shell genellikle /bin içindedir. ). Stanadart bir örnek şu şekildedir. [/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]#!/bin/bash[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]*( shebang terimi arkasında unlem olan diyez demek ) [/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]Ă[/FONT][FONT=Verdana, Arial, Helvetica, sans-serif]det olarak hash işareti C++ deki // a benzer olark açıklama yapmak için kullanırlır. ( açıklma sonlandırıcı) [/FONT]

[FONT=Verdana, Arial, Helvetica, sans-serif]1.3 Shell Script ler niçin kullanılır? [/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]Bazıları shell scriptlerine baktıklarında “hey bu başka bir programlama diline benziyor. Kullandığım programlama dili ile aynısı nı yapabilirim “ derler. Ve pek çok şeyi yapabilirle ama ss basit görevleri kolayca yapmaktadır. Örneğin siz resimlerin bulundugu bir klasöre bakıp , onlardan birini rastgele seçen ve onu desktop resmi olarak atayan bir program istediniz. Bunu yapması için bir c porgramı yazmalısınız. Bundan dolayı çeşitli sistem api larını kullanmalısınız, sonra desktop resim ayarları için Xwindows apilerini öğrenmelisiz . program hatalarını temizlemelisiniz , derlemelisiz ve sonrada bugları arayıp durmalısınız. Veya X ile gelen önceden yapılmış araçları kullanan 5 satırlık ss yazarsınız ( eger fantezi yaparsanız 12 satırlık da olabilir. ) [/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]Eğer mesajlarınıza bakmak ve bilgisayardan belli bir kritere göre sınıflandırılmış 5 mesajınızın [/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]kopyasını size email ile göndemesini isterseniz , var logmesajı açan ve yazdığınız algoritma ile kriterler mesajları bulan , onları sayısını alıp memory e kaydeden , sonra tcp portu acıp mail server ınıza bağlanan ve smtp ile mesajlarınızı gönderen ve açtığı portu kapayan bir C programı yazmalsınız veya for döngüsü grep wc sort kullanan ve sonuçları sendmail e yollayan 7 satırlık ss yazarsınız [/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]özetle ss yazmanın arkasında nokta sadece aynı komutları, defalarca tekrar tekrar yazmadan ve yüzüncü kez çalıştırdığınızda yazım hataları için endişelanmeden tekrar tekrar çalıştırabilmek değil fakat tekerleği yeniden keşfetmek yerine unixle gelen pek çok kullnılışlı aracı kullanmak tır. [/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]2 Tek Satircilar[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]ss ler tek satırda pek çok şaşırtıcı şey yapabilri. hernekadar unix sistemlerde pek çok ss, 1 tane shell tanımlayıcı satır birde komplex komuttan oluşan toplam 2 satır dan da oluşsa siz onların gerçekk ss olup olmadıgını tartışabilirsiniz ama onlar herhalükarda bilinmesi güzel şeyler.[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]2.1 Yönlerdirme[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]2.1.1 Dosya tanımlayıcılar[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]Unix program lar çalıştırıldıklarında 3 dosya tanımlayıcı açılır. bunlar stdin stdout ve stdserr olarak isimlendirilirler.pek çok komut satırlı program ınputları stdin den okur hataları stderr a yazar ve diğer tüm şeyleri stdout a yazar. her dosya dosya tanımlayıcısının bir sayısı vardır. Bunlar Stdin ki 0 , stdout ki 1, stderr ki 2 dir. ( bunların önemini daha sonra görüceğiz. ) [/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]2.1.2 Basit Yönlendirme [/FONT][FONT=Verdana, Arial, Helvetica, sans-serif](sort [/FONT][FONT=Verdana, Arial, Helvetica, sans-serif])[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]Çok kullanışlı unix araçlarından biri sort[/FONT][FONT=Verdana, Arial, Helvetica, sans-serif] dur. sort[/FONT][FONT=Verdana, Arial, Helvetica, sans-serif] ınputları stdin den alır onları sıralar ve sınıflanmış formlar lar şeklinde stdout a yazar. Sıralanacak kelimlerden oluşan bir dosyanız oldugunu söylerseniz shell kullanarak sort[/FONT][FONT=Verdana, Arial, Helvetica, sans-serif] ile yapabilrisiniz. [/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]sort < file [/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]bu dosyanın içeriğin sıralanmış şekilde çıktı verir. aynı zaman da siz komutun sonucunu baska bir dosyaya da yönlendirebilirsiniz.[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]sort < file > file.sorted[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]yönlendirmenin sırası genellikle çok önemli değildir. Şu şekilde de yapailirsiniz[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]sort > file.sorted < file[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]sadece stdout u yönlendirdiğinize dikkat edin bundan dolayı stderr hala terminal de duruyor.[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]eger siz strerr u da baska dosyaya yönledirmek isterseniz ( numarası 2 idi ) [/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]sort < file > file.sorted 2 > file.error[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]2.1.3 LotsofFiles=dosyaların hepsi ?![/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]Shell ile dosya okuma veya yazmak dan başka, tanımlayıcının alacağı numarasını belirtmek koşuluyla yeni dosyalarda açabilirsiniz. Meraklıysanız işte örnek:[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]sort < file > file.sorted 2 >file.error 3> file.3 4 < file2[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]2.1.4 Sonuçların Birleştirilmesi [/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]Sonuçları birbirine bağlayabilrisiniz. Örneğin stdout ve stderr ü aynı dosyaya yazdırmak istiyorsunuz. : [/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]Sort < file 1 >&2 > file.out [/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]2.1.5 Ekleme[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]Buna benzer her yönlendirme yaptığınızda file.sorted dosyanızın her seferinde yeni kopyası ile yerdeğiştirdiğini farketmişsinizdir. Eğer bunu istemezseniz basitçe > yerine >> kullanın[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]2.2 Koşullar[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]komutların / programların çalışması bittiğinde shell e return value denen bir sonuç döndürürler. bu sonuc komutun duzgun çalışıp çalışmadıgını bıldirir. genel bir düşünce olarak bir komutun doğru çalışması ondan önceki komutun doğru çalışmasına bağlıdır. örneğin çalışması gereken önemli bir komutunuz olabilir ve siz bu komut çalışmazsa size email ile bildirilmesini istiyorsunuz veya komutlardan biri çalışmasa da programızınız durmasını istemediğiniz komutlar seriniz olabilir. Bunu yapmanızın yolu return value üzerinden çalışan koşullardır. [/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]Koşullar geleneksel boolean operatorleridir. Bazı standart semboller kullanırsınız: || (or), $$ (and), ! (not), ve ;[/FONT][FONT=Verdana, Arial, Helvetica, sans-serif] . komutlar kısa devre biçiminde yorumlanır. bundan dolayı a && b[/FONT][FONT=Verdana, Arial, Helvetica, sans-serif] komutu a false sonuç döndürürse b çalışmaz fakat a ve b true döndürürse b çalıştırılır.[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]bu komut foo.c dosyasını derliyor ve hata yoksa sonuç dosyasını çalıştırıyor [/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]gcc foo.c && ./a.out[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]burda ise foo.c derleniyor ve hata varsa vim ( lınux da editor ) ile düzenleniyor. [/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]gcc foo.c I vim foo.c[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]siz bu ikiisni birbirine bağlayabilirsiniz. burda hata yoksa calıştıran , hata varsa edit için vim i acan komut bu.[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]gcc foo.c && ./a.out | vim foo.c[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]2.3 Çevresel Değişkenler[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]İşletim sistemlerinde ki kavramlardan biri de uzun süre önce bulunan çevresel değişkenlerdir. [/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]Çevresel değişkenler tüm uygulamalar tarafından okunabilen bir degişken yığınına verilen isimdir.[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]dos prompt’ta veya unix shell’de set yazip enter’a basinca goreceginiz degişkenlerdir. [/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]Çevresel değişkenleri şu şekilde atayabilirsiniz. [/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]Export HISTCONTROL=”ignoredups”[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]Dikkat etmeniz gereken bazısı:[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]HISTCONTROL [/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]Bunu ignoredups[/FONT][FONT=Verdana, Arial, Helvetica, sans-serif] a atayın ve sonra bana teşekkür edin. ( komut history nizi oluştururken tekrarları önemsemez. Eğer ne hakkında konuştuğumu anlamıyorsanız Readline bölümünü okurken bana teşekkür edersiniz ) [/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]PS1&PS2[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]bu istemciyi ayarlar, kurar. PS1[/FONT][FONT=Verdana, Arial, Helvetica, sans-serif] standart istemcidir , PS2 [/FONT][FONT=Verdana, Arial, Helvetica, sans-serif]kapsayıcı ( dongü, tırnak işareti parantes vs ) yı açık bıraktığında bilgi ister .[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]PS3 [/FONT][FONT=Verdana, Arial, Helvetica, sans-serif]de var fakat nadiren kullanılır.[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]PAGER[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]text dosyalarını görmek için varsayılan program . man[/FONT][FONT=Verdana, Arial, Helvetica, sans-serif] – ı kullanır. Siz pager ı örneğin man sayfalarını görmek için more[/FONT][FONT=Verdana, Arial, Helvetica, sans-serif] ve less [/FONT][FONT=Verdana, Arial, Helvetica, sans-serif]ile man sayfaları arasında geçiş yaparak da kullanabilirsiniz.[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]EDITOR[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]text dosyaları oluşturmak veya düzenlemk için varsayılan program . Pek çok mail okuyucu veya oluşturucu bu programı kullanıyor.[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]PATH[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]Bir komut yazıldığında onu araştırmak için sütünlara ayrılmış dizinler listesi . Eğer komut bu dizinlerden birinin içindeyse , çalıştırılır. Liste başından sonuna sırayla aranır ve ilk bulunan kullanılır. [/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]2.4 Quotes, Strings, and Expansion[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]2.4.1 Wildcard , Jokerler[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]Belli olmayan bir veya daha fazla karakterin yerine gecen karakterler [/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]bir komuta string ifade ettiğinizde gerçekten değerlendirilmeden önce genellikle bir kaç yolla yorumlanır. örneğin siz şu komutu çalıştırdığınızda [/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]ls *.txt[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]dizindeki sonu txt le biten tüm dosyalar consol ekranına yazılır. yıldız ilk shell sürümlerinde a joker olarak kullanılırdı. [/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]Shell *.txt paternini genişletir ve sizin dizininizde 2 tane txt uzantılı dosya varsa ls komutu ls bar.txt foo.txt olarak algılar.[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]2.4.2 Tilde ( ~ ) [/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]unix’te kullanıcıların home dizinlerine işaret eden kısayol. [/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]web server’larda kullanıcı sayfalarını belirlemek için de kullanılır. aynı zamnda diğer kullanıcı isimleri ile birlikte belirtilen kullanıcını home dizininin yolunu göstermek için kullanılır.[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]ls ~ ostermann/classbin[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]2.4.3 List[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]listeleri kullanarak bir string in alabileceği değerleri önceden tanımlayabilirsiniz ve bu kısıtlı wildcard (joker) gibi çalışır. Örneğin:[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]rm foo. {aux,dvi,log,pdf,ps}[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]foo.aux, foo.dvi, foo.log, foo.pdf, foo.ps dosyalarını siler.[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]2.4.4 Değişkenler [/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]Değişkenler de karakter katarlarında yorumlanırlar. Geçerli çevrenin içeriği tüm değişkenlerdir. böylece öğrenmek için , örneğin PATH değişkeniniz ne ? [/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]echo $PATH[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]echo ${PATH}[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]ikisi aynı fakat 2. si komplike scriptdir ama daha güvenli ve karışıktır. Aynı zamanda kendi değişkenlerinizi şöyle tanımlayabilir ve kullanbilisiniz.: [/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]FOO=bar[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]echo $FOO[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]2. satır eger siz echo bar yazsanızda shell tarafında yorumlanır. bunun anlamı siz aynı zamanda şöylede yapabilirsiniz:[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]FOO = ’ls -l’[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]$FOO /usr/bin[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]ve siz ls -l /usr/bin[/FONT][FONT=Verdana, Arial, Helvetica, sans-serif] yazmışsınız gibi davranır. [/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]2.4.5 Tırnak İşaretleri[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]eger siz açıklamanın standart yapısını değiştirmek isterseniz tırnak işareti kullanarak stirng in içindeki şeyleri gruplayabilirsiniz. [/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]3 tip tırnak var. çift tırnak tek tırnak ve ters tırnak . Çift tırnak string içindeki leri gruplar böylece sizin boşluk içeren bir argumannınız olabilir. Değişkenler , tilde, wildcards ve diğer tırnak tipleri çift tırnak için de kullanılabilir.[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]tek tırnak da çift tırnak gibi string içeriğini gruplayabilir ama tek tırnak içinde başka bir şey yorumlanmaz. [/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]Ters tırnak içeriği sanki başka bir komutmuş gibi değerlendirir. [/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]kafanız karıştı değil mi ?[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]tabloyu inceleyin. [/FONT]

[FONT=Verdana, Arial, Helvetica, sans-serif]Çift tırnak [/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]Tek tırnak [/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif] Ters tınak
[/FONT] [FONT=Verdana, Arial, Helvetica, sans-serif]echo foo > file.txt[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]echo bar >> file.txt[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]THEFILE=file.txt[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]echo “wc –l $THEFILE”[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]echo foo > file.txt[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]echo bar >> file.txt[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]THEFILE=file.txt[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]echo ’wc –l $THEFILE’[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]echo foo > file.txt[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]echo bar >> file.txt[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]THEFILE=file.txt[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]echo ‘wc –l $THEFILE‘[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]Sonuç: [/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]wc –l file.txt[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]wc –l $THEFILE[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]2[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]3 Story Problemleri[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]böylece siz tırnakları değişkenleri wildcardları , yönlendirmeyi anladınız ve dunya ya hakimsiniz . o halde siz bir dizindeki tum dosyaların uzantısını .html yapmak istiyorsunuz[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]3.1 Döngüler[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]Shell bir kaç çeşit dongüyü destekler. Şimdi bunlardan for while ve until i inceleyelim .[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]3.1.1 For-Loops[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]2 tip for dongusu var. c- stil ve list stil. c-stil donguyu örnekle açıklamak kolaydır. [/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]for (( I = 1; $I <4; I = $I+1)); do[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]echo $I[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]done[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]bu script ayrı satırlara 1 2 3 yazar. C deki for döngüsü gibi 1. kısımda ilk deger atanır. 2. kısımda test edilir. 3 . kısımda artış sağlanır. [/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]for döngüsünün 2. şekli string i listler içinde shell in yeteneğine bağlı ayrımlaştırmakdır. İşte örnek :[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]for F in ‘ ls ~/*‘ ; do[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]echo $F[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]done[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]shell string i in[/FONT][FONT=Verdana, Arial, Helvetica, sans-serif] ve ;[/FONT][FONT=Verdana, Arial, Helvetica, sans-serif] arasında ayrıştırır ve liste elemanlarına atar.[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]liste de ki her eleman için F[/FONT][FONT=Verdana, Arial, Helvetica, sans-serif] değişkenine listenin her elemanın değeri atanacak ve döngünün içeriği uygulanacak. .[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]shell listedeki kodları bosluk veya yeni satır ile böler. Bundan dolayı bu örnekte dilediğiniz yerde basitçe home dizinindeki her dosyanın isminin çıktısını verir. Eger bu dosyalardan biri isminde boşluk karakteri içeriyorsa , onun ismi bölünür ve farklı satıra koyulur.bu örnekte .html uzantısını şu şekilde ekleyebilirsiniz.:[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]for F in *; do mv $F $F.html ; done [/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]oh. size söylemedim mi ?[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]döngüler tek satır gibi ifade edilebilir.[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]fakat sizinde gördüğünüz gib değişkenlerin adları nasıl karışık. scriptleri şu şekilde yazmak daha güvenli;[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]for F in *; do mv ${F} ${F}.html ; done [/FONT]

[FONT=Verdana, Arial, Helvetica, sans-serif]3.1.2 Whıle ve Until döngüleri [/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]bu döngü ondan ne dilerseniz aynen yapar. while döngusu şu şekildedir.:[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]F=1[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]while [ $F -lt 5 ] ; do[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]F= $ (( $F+1))[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]echo “Not done yet”[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]done[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]until döngüsü karşılaştırma kısmı hariç aynıdır.[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]3.2 Diğer Değişkenler[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]3.2.1 Sayılar[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]siz belkide şimdiden söylediniz ki gördüğümüzden daha fazla shell değişkeni var. Pek çok zaman değişkenlere string gibi davranılır. Bununla beraber bazen sayı gibi de davranırlar. Bir değişkene sayı gibi davranmak için onu çift parantez içine alırız . Örneğin üsteki örnekte F=$(($F+1)) [/FONT][FONT=Verdana, Arial, Helvetica, sans-serif]. Değişkenler aynı zamanda bir unix aracı olan test[/FONT][FONT=Verdana, Arial, Helvetica, sans-serif] tarafından işlenincede sayı gibi davranırlar. [/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]Not: test [/FONT][FONT=Verdana, Arial, Helvetica, sans-serif][ ] işaretleri arasında yazılır. Eğer test in dogru yazımını öğrenmek isterseniz konsol da man test[/FONT][FONT=Verdana, Arial, Helvetica, sans-serif] yazıp bakabilirsiniz.[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]3.2.2 D[/FONT][FONT=Verdana, Arial, Helvetica, sans-serif]aha iyi string manuplasyonu[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]Malesef shell stringleri ile işlem yapma yeteneği kısıtlanmıştır. İyiki aynı etkıyı almak için standart unix araçlarını kullanabilirsiniz. İsimlerinde boşluk olan dosyaları alıp bu boşlukları alt çizgi ile değişmeniz gerektiğinde ne dersiniz burda sed[/FONT][FONT=Verdana, Arial, Helvetica, sans-serif] e görev düşüyor. (sed[/FONT][FONT=Verdana, Arial, Helvetica, sans-serif] standart düzenli ifadeleri sizin için yorumlar ) . şöyle bir şey yapabilirsiniz.[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]( tırnakların kullanım şekillerine dikkat):[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]for F in *; do [/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]mv $F ‘echo $F | sed ’s / / _/g’ ‘[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]done[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]benzer olarak eğer ss ile kendi ip nizi bulmak isterseniz , awk[/FONT][FONT=Verdana, Arial, Helvetica, sans-serif] ı kulanbilirsiniz. awk[/FONT][FONT=Verdana, Arial, Helvetica, sans-serif] genel olarak sadece boşlukla bölümlenmiş text stringleri tanımlamak için kullanılır. cut ile beraber kullanıldığında ( stringleri özel karakterler le bölümler ) şöyle birşeyler yapabilrisiniz.: [/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]MYIP= ‘/sbinz/ ifconfig eth0 | grep “ inet addr:” awk ’ {print $2 }’ | cut –d: ~ f2’[/FONT]

[FONT=Verdana, Arial, Helvetica, sans-serif]3.3 Koşullar[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]2 temel koşul var. ( daha önceden bahsetmedim ) . ilk ki if[/FONT][FONT=Verdana, Arial, Helvetica, sans-serif] . nasıl kullanıldığını anlamak çok kolay dır ama syntax I biraz gariptir. Nasıl çalışıyor bakalım.[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]if [ $F -eq 1 ]; then[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]echo "Equals One"[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]elsif [ $F -eq 2 ]; then[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]echo "Equals Two"[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]else[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]echo "Equals Neither"[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]fi[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]if deyiminin kapanışı if in tersten yazımı şeklinde olduguna dikkat edin. Case[/FONT][FONT=Verdana, Arial, Helvetica, sans-serif] deyimi de aynı şekildedir. If ile aynı iş yapan case deyimi söyledir.[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]case "$F" in[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]"1")[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]echo "Equals One"[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif];;[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]"2" )[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]echo "Equals Two"[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif];;
* )
[/FONT]

[FONT=Verdana, Arial, Helvetica, sans-serif]echo "Equals Neither"[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif];;[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]esac[/FONT]

[FONT=Verdana, Arial, Helvetica, sans-serif]4 Gelişmiş scriptler.[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]Henüz make komutunu öğrenmediğinizden .tex dosyalarını .pdf dosyasına ve . **LATEX dosyalarınızı .dvi .ps ve .pdfs dosyalarına manuel derlemeyi deneyebilirisiniz. Bunun için 2 seçeneğiniz var. Şiddetle tavsiye edilen make komutunun öğrenmek veya ss yazmak. [/FONT]

[FONT=Verdana, Arial, Helvetica, sans-serif]** LATEX: [/FONT][FONT=Verdana, Arial, Helvetica, sans-serif]genellikle unix tabanlı işletim sistemlerinde kullanılan, bir text editörü. Metin işleyici. en önemli farkı ve çok fazla kullanılmasının sebebi, formul, şekil gibi microsoft word vb. kullanarak yapılması çok zor olan şeylerin çok daha kolay oluşturulabilmesidir. özellikle formullerin sadece klavye kullanarak bir kaç basit işaretle oluşturuluyor olması çok hoş. [/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]word gibi programlarin aksine ’what you see is what you get’ olmayan word processor. yazdiklarinizi compile edip dvi yapar sonra da postscript olarak gorursunuz. formati belirleyen siz degil kullandiginiz style veya class dosyasidir. dolayisiyla formatin disina cikmamaniz garantiye alinmistir. bir de scientific workplace gibi kolaylastirilmis cesitleri bulunur, profesorler de guzel guzel paper ve kitap yazsinlar diye.[/FONT]

[FONT=Verdana, Arial, Helvetica, sans-serif]4.1 Ön tanımlı değişkenler[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]4.1.1 Sayılar[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]Ss text dosyalarında ***executable bit tanımladığınızda normal program gibi çalıştırılabililir. Normal program gibi arguman veribilebilir. Sayılar değişkenleri $0 $1 $2 vs şeklindedir. Bir ss de $0 ss ismini belirtir. $1 birinci argumana denk gelir. Eger arguman yoksa değişken birşey içermez. [/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]make[/FONT][FONT=Verdana, Arial, Helvetica, sans-serif] problemini çözmek için bu scripti yazmalıyım[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]#!/bin/bash[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]latex $1.tex && dvips -o S1.ps $1.dvi && ps2pdf $1.ps[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]Eğer ben bu scripti latexit[/FONT][FONT=Verdana, Arial, Helvetica, sans-serif] olarak adlandırırsam ve kendi dosya yoluma koyarsam latexit foo[/FONT][FONT=Verdana, Arial, Helvetica, sans-serif] komutu ile foo.tex[/FONT][FONT=Verdana, Arial, Helvetica, sans-serif] dosyasını foo.pdf[/FONT][FONT=Verdana, Arial, Helvetica, sans-serif] ye derleyebilirim. [/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]*** executable bit unix’te bir dosyanın özelliklerinde executable olup olmadığını tutan bit [/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]owner, group ve herkes için üç adet bulunur[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]4.1.2 Dinlenme[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]Pek çok ön tanımlı değişken vardır. Işte onlar:[/FONT]

[FONT=Verdana, Arial, Helvetica, sans-serif]$* Standart olan bu komut satırı parametrelerinin tümünü belirtmek ve/veya kullanabilmek amacıyla [/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]$@ Standart olan bu komut satırı parametrelerinin tümünü belirtmek ve/veya kullanabilmek amacıyla boşluklar la bölümlenmiş şekilde genişletir.[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]$# Komut satırı parametreleri sayısını öğrenme[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]$? En son icra edilen komutun dönüş kodunun elde edilmesini sağlar. ( komut başarılımı değilmi ?) [/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]$$ SHELL deki PID leri verir.[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]$! Son komutun PID ini verir.[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]$_ Bu da tam dosya ismini veya son çalışan komutun son argumanını verir. [/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]4.1.3 Diziler[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]Sanırım daha önceden bahsetmediğim değişkenler diziler olabilir. [/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]FOO[1]=bar [/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]echo ${FOO[1]}[/FONT]

[FONT=Verdana, Arial, Helvetica, sans-serif]4.2 Ön Tanımlı fonksiyonlar.[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]Shell de yüzlerce yazılmış ön tanımlı fonksiyon vardır. Eğer onları hatırlamak istersenız man sayfalarını okuyun.[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]Bunlardan benim en fazla kullandığım ikisi read unset[/FONT][FONT=Verdana, Arial, Helvetica, sans-serif] ve eval[/FONT][FONT=Verdana, Arial, Helvetica, sans-serif] dir. [/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]Bunlar diğer dillerideki ne benzer şeyler yaparlar. [/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]Kabuk programları içerisinde kullanımı söz konusu olan değişkenlere okutma yolu ile değer atama işleminin yapılmasında “read” [/FONT][FONT=Verdana, Arial, Helvetica, sans-serif]ile yapılır. [/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]Çalışan kabuk programları içerisinde kullanımı söz konusu olan ve herhangi bir değeri bulunan ve/veya bulunmayan bir değişkeninin tanımının silinmesi işlemi, "unset" komutu yardımıyla yapılır. [/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]Sistem komutlarının ve/veya programlarının doğrudan kullanımı söz konusu olduğunda, "eval"[/FONT][FONT=Verdana, Arial, Helvetica, sans-serif] komutu da[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]kullanılabilir.[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]4.3 Fonksiyonlar[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]Kendi fonksiyonlarınızı tanımlamak oldukça eğlencelidir. Bunu açıklamanın en kolay yolu örnekle anlatmaktır. [/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]function add_to_path { INPATH=0[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]for F in ’echo $PATH | sed ’s/:/ /g’ ’ ; do[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]if [ $1 == $F ] ; then [/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]INPATH=1 [/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]break [/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]fi[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]done[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif][ $INPATH –eq 0 ] && PATH="$PATH:$1” [/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]unset INPATH[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]5 Scritlerin ötesi [/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]Bu bölümde shell ve komut yazma ile alakalı pek kimsenin bilmediği ama hayatlarını daha kolaylaştıracak küçük bilgilerden bahs edilmekte. [/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]5.1 Readline Güzelliği [/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]Bir zamanlar bir unix hackerı shell de script yazarken bir hata yaptı ( bu hacker için nadir bir şeydi ) . backspace tuşuna bastığı zaman consol pencersinde ~H[/FONT][FONT=Verdana, Arial, Helvetica, sans-serif] yazdığını gördü. Bu hackerı oldukça üzdü ve yön tuşlarıyla geri gidip komutu düzeltmeyi denedi. Komutlarını sıfırdan tekrar yazarken bunu önleyecek şeyi çözdü . scriptini tamamladıkdan sonra bir kütüphane dosyası yazdı . bir libreadlien oluşturdu ve güzeldi. [/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]Libread line terminal den okuyan bir kutaphane dosyasıdır. Komutları hafızasında tutar. Yön tuşlarıyla önceki komutlarınızı görebilirsiniz. Komutlarınızı yön tuşlarıyla düzeltmenizi sağlar. Tab tuşuyla komutlarınızı tamamlamanızı sağlar . standart emacs veya vi komutlarını kullamanızı sağlar. [/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]5.2 Unix araçları [/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]Bu liste Matt Hyclak ın listesinden ödünç alınmıştır. Bu liste deki komutları bilmeniz gerekmektedir ve bunlar eğer ss de pek çok şeyi yapabilmeniz için oldukça kullanışlıdır. [/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]Awk [/FONT][FONT=Verdana, Arial, Helvetica, sans-serif]Komutların çıktılarındaki bilgiler üzerinde değişik uygulamaların yapılmasını sağlayan bir komutdur.[/FONT]


[FONT=Verdana, Arial, Helvetica, sans-serif]Cat [/FONT][FONT=Verdana, Arial, Helvetica, sans-serif]Stdin ve herhangi bir dosyayı alır ve onları stdout a aktarır. [/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]Cut [/FONT][FONT=Verdana, Arial, Helvetica, sans-serif]B[/FONT][FONT=Verdana, Arial, Helvetica, sans-serif]ir dosyanın herbir satırında yer alan byte ların, karekterlerin veya alanların kesilerek görüntülenmesini sağlayan komut[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]Date[/FONT][FONT=Verdana, Arial, Helvetica, sans-serif] gerçek zamanı ve tarihi yazar. [/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]Diff [/FONT][FONT=Verdana, Arial, Helvetica, sans-serif]2 palintext unix dosyası arasındaki farkı bulur. [/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]Echo [/FONT][FONT=Verdana, Arial, Helvetica, sans-serif]terminalde bir karakterin ekranda gorunmesi i$lemi[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]Find [/FONT][FONT=Verdana, Arial, Helvetica, sans-serif]Aradığınızı bulmayı sağlar.[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]Grep[/FONT][FONT=Verdana, Arial, Helvetica, sans-serif]Metin dosyasında/dosyalarında bir kalıp dizgisinin aranmasını sağlayan komut[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]Less [/FONT][FONT=Verdana, Arial, Helvetica, sans-serif]Unix’te stdin’den gelen file’i sayfa sayfa gosteren komut.. [/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]Locate [/FONT][FONT=Verdana, Arial, Helvetica, sans-serif]Find dan daha iyi bir bulucudur. Eger siz bir dosyalarınız için endişelenirseniz locate periodik olarak tüm dosyalarınızdan oluşan bir database oluşturur ve arama zamanını son derece azaltır. [/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]lynx or links [/FONT][FONT=Verdana, Arial, Helvetica, sans-serif]consol da çalışan bır web browserdır. X in çalışmadığı zamanlara eğer bir referansa ihtiyacınız varsa lynx sizi kurtarır. Links lynx den biraz daha iyidir. [/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]Man [/FONT][FONT=Verdana, Arial, Helvetica, sans-serif]unix in el kitabıdır. Script için kullanışlı değildir ama öbür komutları öğrenemediyseniz bunu bari öğrenin.[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]More [/FONT][FONT=Verdana, Arial, Helvetica, sans-serif]standart unix pager ıdır . stdin’den gelen file’i sayfa sayfa gosteren komut[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]Printf [/FONT][FONT=Verdana, Arial, Helvetica, sans-serif]echo dan biraz daha iyi . i yeni satır a dönüştürür. [/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]Ps [/FONT][FONT=Verdana, Arial, Helvetica, sans-serif]sistemde çalışan uygulamaları listeler.[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]Sed [/FONT][FONT=Verdana, Arial, Helvetica, sans-serif]stream editor.. unix’te bir gui’ye sahip olmayan command line parameter’larla calişan text editor[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]Sort [/FONT][FONT=Verdana, Arial, Helvetica, sans-serif]Metin tabanlı dosyaların sıralanmasını sağlayan komut[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]Test [/FONT][FONT=Verdana, Arial, Helvetica, sans-serif]Ifadeleri test için kullanılır ve 1 veya 0 değerini döndürür. [/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]We [/FONT][FONT=Verdana, Arial, Helvetica, sans-serif]Bir dosya hakkına karakter sayısı satır sayısı toplam kelime gibi istatistik verir.[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]Which [/FONT][FONT=Verdana, Arial, Helvetica, sans-serif]Bir komutun tüm dosya yolunu gösterir. [/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]who/w[/FONT][FONT=Verdana, Arial, Helvetica, sans-serif] S[/FONT][FONT=Verdana, Arial, Helvetica, sans-serif]istem deki kullanıcıları listeler. [/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]Xargs[/FONT][FONT=Verdana, Arial, Helvetica, sans-serif]bir komutun icrası sonucu oluşan ekran çıktılarının bir başka komut için giriş parametresi olarak kullanılmasına olanak sağlayan[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]5.3 Konfigürasyon dosyaları [/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]Ne oldu tahmin edin. config dosyaları küçük birer ss leridir. onların kısıtlı alanı yoktur. shell tarafından direk çalıştırılabilir. ve alt shell tarafından çalıştırılamaz. Bana inanmadınız mı? [/FONT]

[FONT=Verdana, Arial, Helvetica, sans-serif]#.bashrc[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]if [ -f ~/.bash_profile ]; then[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]. ~/.bash_profile[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]fi[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]# shell info
PS1="/dev/null << "
PS2="<< "
[/FONT]

[FONT=Verdana, Arial, Helvetica, sans-serif]#User specific aliases and functions
alias ls= ’ls –color’
[/FONT]

[FONT=Verdana, Arial, Helvetica, sans-serif]alias lsl= ’ls –color -lh’ [/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]alias quota= ’quota -v kwheeler’[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]export PATH=$PATH: /usr/ccs/bin[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]Gayet ustaca değil mi?[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]6 Örnekler[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]6.1 Desktop arka resmini değiştirme[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]X ortamında ki background resmini resim klasöründen rastgele bir resim ile değiştirir.[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]#!/bin/bash[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]PICTURES=/home/kyle/bgs[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]COUNT=’ls $PICTURES | wc -l’[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]WHICH=$((RANDOM%COUNT))[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]WHICH=$((WHICH+1))[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]COUNT=0[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]for F in $PICTURES /*; do[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]COUNT=$((COUNT+1))[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]if [ SCDUNT -eq $WHICH ]; then[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]Esetroot "$F"[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]break[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]fi[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]done[/FONT]

[FONT=Verdana, Arial, Helvetica, sans-serif]6.2 Mesajları kontrol etmek [/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]Bunu niçin yapmak istediğiniz hakkında fikrim yok ama bunda bölüm 1.3 de bahsetmiştim.[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]işte o kodlar:[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]#!/bin/bash[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]PATTERN="FAILED"[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]while true; do[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]if [ ‘grep "$PATTERN" /var/log/messages | wc -l’ -eq 5 ]; then[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]printf ’To: [email protected] Stuff Went Bad!’ | /usr/sbin/sendmail -t[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]fi[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]done[/FONT]
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.