Tasarimrsc |
Bilişim |
Hizmetleri |
Forum | Ana Sayfa | İletişim | Wep Tasarım | Site Kaydetme | Seo | Referanslarımız | Domain Nedir | wep Site
Hosting | Seo uygulaması | Programlama | Hizmetlerimiz | wep site yapımı | Htlm Dersleri | Htlm nedir | Sayfa yapma | HoparlörShell nedir | Shell scripting | Page Rank | Kontrol Paneli | googleye site kaydetme Sanal Pos | wep programlama | Logo Tasarımı | Pagerank yükseltme | Arama motorlarına kayıt | Htlm Dersleri | Htlm nedir |
Bu dokuman kabuk programlamayı tanıtım yazısıdır. Bu eksiksiz veyagüvenilir bi kaynak anlamına gelmez ama aynı ifade ile ben ne hakkındakonuştuğumun da oldukca farkındayım.. bu dokumandaki tüm örnekler aksibelirtilmedikçe bash syntax ı kullanır. Eğer burda bir script den bahsedersem bu scripti dokumanın sonundaki örnekler kısmına eklemeyeçalışacağım.
1.1 Shell nedir?
Pekçok bilgisayarda komut satır arayüzü vardır. Bundan dolayı siz pek çokbilgisyarda komut satırı denen bir pencere açıp bilgisayardan yapmasınıistediğiniz şeyi, komut şeklinde yazarbilirsiniz . Açtığınız herpencerede sizin yazdıgınız her karakteri okuyup bilgisyarın donanımınınanlayacağı gerçek komutlara çeviren bir program çalışır. Işte buprograma komut çevirici veya shell denir. DOS shell olarak command.comkullanır. Unıx sitemlerde pek çok shell var.
1.2 Shell Scripts= Kabuk Programı nedir?
Shellscript shell de çalıştırılmak üzere komutlar topluluğu içeren bir textdosyası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 uygunkomut topluluğu nu destekler. Pek çok durumda bu script dosyasınıniçeriği komut satırına yazılabilir ve sonuç çalışan script le aynıolabilir.
Unixsistemlerde pek çok shell ortaya çıktıkdan beri scriptler bu shelllerden herhangi biri ile yazılabilir. Ve her shell farklı syntax vefarklı yeteneklere sahip oldugundan beri her shell scripti doğrudavranış gösterebilmesi için hangi shell de yorumlanacağınıntanımlanması gegekmektedir. Bu tanımlam script in ilk satırında yapılır.
Dosyanınilk satırı şu şekildedir. *Shebang ve shell in tam adresi. (shellgenellikle /bin içindedir. ). Stanadart bir örnek şu şekildedir.
#!/bin/bash
*( shebang terimi arkasında unlem olan diyez demek )
Ădet olarak hash işareti C++ deki // a benzer olark açıklama yapmak için kullanırlır. ( açıklma sonlandırıcı)
1.3 Shell Script ler niçin kullanılır?
Bazılarıshell scriptlerine baktıklarında “hey bu başka bir programlama dilinebenziyor. Kullandığım programlama dili ile aynısı nı yapabilirim “derler. Ve pek çok şeyi yapabilirle ama ss basit görevleri kolaycayapmaktadır. Örneğin siz resimlerin bulundugu bir klasöre bakıp ,onlardan birini rastgele seçen ve onu desktop resmi olarak atayan birprogram 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 desktopresim ayarları için Xwindows apilerini öğrenmelisiz . programhatalarını temizlemelisiniz , derlemelisiz ve sonrada bugları arayıpdurmalısınız. Veya X ile gelen önceden yapılmış araçları kullanan 5satırlık ss yazarsınız ( eger fantezi yaparsanız 12 satırlık daolabilir. )
Eğer mesajlarınıza bakmak ve bilgisayardan belli bir kritere göre sınıflandırılmış 5 mesajınızın
kopyasınısize email ile göndemesini isterseniz , var logmesajı açan veyazdığınız algoritma ile kriterler mesajları bulan , onları sayısınıalıp memory e kaydeden , sonra tcp portu acıp mail server ınızabağlanan ve smtp ile mesajlarınızı gönderen ve açtığı portu kapayan birC programı yazmalsınız veya for döngüsü grep wc sort kullanan vesonuçları sendmail e yollayan 7 satırlık ss yazarsınız
özetless yazmanın arkasında nokta sadece aynı komutları, defalarca tekrartekrar yazmadan ve yüzüncü kez çalıştırdığınızda yazım hataları içinendişelanmeden tekrar tekrar çalıştırabilmek değil fakat tekerleğiyeniden keşfetmek yerine unixle gelen pek çok kullnılışlı aracıkullanmak tır.
2 Tek Satircilar
ssler tek satırda pek çok şaşırtıcı şey yapabilri. hernekadar unixsistemlerde pek çok ss, 1 tane shell tanımlayıcı satır birde komplexkomuttan oluşan toplam 2 satır dan da oluşsa siz onların gerçekk ssolup olmadıgını tartışabilirsiniz ama onlar herhalükarda bilinmesigüzel şeyler.
2.1 Yönlerdirme
2.1.1 Dosya tanımlayıcılar
Unixprogram lar çalıştırıldıklarında 3 dosya tanımlayıcı açılır. bunlarstdin 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. )
2.1.2 Basit Yönlendirme (sort )
Çok kullanışlı unix araçlarından biri sort dur. sortı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ızoldugunu söylerseniz shell kullanarak sort ile yapabilrisiniz.
sort < file
budosyanın içeriğin sıralanmış şekilde çıktı verir. aynı zaman da sizkomutun sonucunu baska bir dosyaya da yönlendirebilirsiniz.
sort < file > file.sorted
yönlendirmenin sırası genellikle çok önemli değildir. Şu şekilde de yapailirsiniz
sort > file.sorted < file
sadece stdout u yönlendirdiğinize dikkat edin bundan dolayı stderr hala terminal de duruyor.
eger siz strerr u da baska dosyaya yönledirmek isterseniz ( numarası 2 idi )
sort < file > file.sorted 2 > file.error
2.1.3 LotsofFiles=dosyaların hepsi ?!
Shellile 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:
sort < file > file.sorted 2 >file.error 3> file.3 4 < file2
2.1.4 Sonuçların Birleştirilmesi
Sonuçları birbirine bağlayabilrisiniz. Örneğin stdout ve stderr ü aynı dosyaya yazdırmak istiyorsunuz. :
Sort < file 1 >&2 > file.out
2.1.5 Ekleme
Bunabenzer her yönlendirme yaptığınızda file.sorted dosyanızın herseferinde yeni kopyası ile yerdeğiştirdiğini farketmişsinizdir. Eğerbunu istemezseniz basitçe > yerine >> kullanın
2.2 Koşullar
komutların/ programların çalışması bittiğinde shell e return value denen birsonuç 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 ilebildirilmesini istiyorsunuz veya komutlardan biri çalışmasa daprogramızınız durmasını istemediğiniz komutlar seriniz olabilir. Bunuyapmanızın yolu return value üzerinden çalışan koşullardır.
Koşullar geleneksel boolean operatorleridir. Bazı standart semboller kullanırsınız: || (or), $$ (and), ! (not), ve ; . komutlar kısa devre biçiminde yorumlanır. bundan dolayı a && b 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.
bu komut foo.c dosyasını derliyor ve hata yoksa sonuç dosyasını çalıştırıyor
gcc foo.c && ./a.out
burda ise foo.c derleniyor ve hata varsa vim ( lınux da editor ) ile düzenleniyor.
gcc foo.c I vim foo.c
siz bu ikiisni birbirine bağlayabilirsiniz. burda hata yoksa calıştıran , hata varsa edit için vim i acan komut bu.
gcc foo.c && ./a.out | vim foo.c
2.3 Çevresel Değişkenler
İşletim sistemlerinde ki kavramlardan biri de uzun süre önce bulunan çevresel değişkenlerdir.
Çevresel değişkenler tüm uygulamalar tarafından okunabilen bir degişken yığınına verilen isimdir.
dos prompt’ta veya unix shell’de set yazip enter’a basinca goreceginiz degişkenlerdir.
Çevresel değişkenleri şu şekilde atayabilirsiniz.
Export HISTCONTROL=”ignoredups”
Dikkat etmeniz gereken bazısı:
HISTCONTROL
Bunu ignoredupsa atayın ve sonra bana teşekkür edin. ( komut history nizi oluştururkentekrarları önemsemez. Eğer ne hakkında konuştuğumu anlamıyorsanızReadline bölümünü okurken bana teşekkür edersiniz )
PS1&PS2
bu istemciyi ayarlar, kurar. PS1 standart istemcidir , PS2 kapsayıcı ( dongü, tırnak işareti parantes vs ) yı açık bıraktığında bilgi ister .
PS3 de var fakat nadiren kullanılır.
PAGER
text dosyalarını görmek için varsayılan program . man – ı kullanır. Siz pager ı örneğin man sayfalarını görmek için more ve less ile man sayfaları arasında geçiş yaparak da kullanabilirsiniz.
EDITOR
text dosyaları oluşturmak veya düzenlemk için varsayılan program . Pek çok mail okuyucu veya oluşturucu bu programı kullanıyor.
PATH
Birkomut yazıldığında onu araştırmak için sütünlara ayrılmış dizinlerlistesi . 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.
2.4 Quotes, Strings, and Expansion
2.4.1 Wildcard , Jokerler
Belli olmayan bir veya daha fazla karakterin yerine gecen karakterler
birkomuta string ifade ettiğinizde gerçekten değerlendirilmeden öncegenellikle bir kaç yolla yorumlanır. örneğin siz şu komutuçalıştırdığınızda
ls *.txt
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ı.
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.
2.4.2 Tilde ( ~ )
unix’te kullanıcıların home dizinlerine işaret eden kısayol.
webserver’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.
ls ~ ostermann/classbin
2.4.3 List
listelerikullanarak bir string in alabileceği değerleri öncedentanımlayabilirsiniz ve bu kısıtlı wildcard (joker) gibi çalışır.Örneğin:
rm foo. {aux,dvi,log,pdf,ps}
foo.aux, foo.dvi, foo.log, foo.pdf, foo.ps dosyalarını siler.
2.4.4 Değişkenler
Değişkenlerde karakter katarlarında yorumlanırlar. Geçerli çevrenin içeriği tümdeğişkenlerdir. böylece öğrenmek için , örneğin PATH değişkeniniz ne ?
echo $PATH
echo ${PATH}
ikisiaynı fakat 2. si komplike scriptdir ama daha güvenli ve karışıktır.Aynı zamanda kendi değişkenlerinizi şöyle tanımlayabilir vekullanbilisiniz.:
FOO=bar
echo $FOO
2. satır eger siz echo bar yazsanızda shell tarafında yorumlanır. bunun anlamı siz aynı zamanda şöylede yapabilirsiniz:
FOO = ’ls -l’
$FOO /usr/bin
ve siz ls -l /usr/bin yazmışsınız gibi davranır.
2.4.5 Tırnak İşaretleri
egersiz açıklamanın standart yapısını değiştirmek isterseniz tırnak işaretikullanarak stirng in içindeki şeyleri gruplayabilirsiniz.
3tip tırnak var. çift tırnak tek tırnak ve ters tırnak . Çift tırnakstring içindeki leri gruplar böylece sizin boşluk içeren birargumannınız olabilir. Değişkenler , tilde, wildcards ve diğer tırnaktipleri çift tırnak için de kullanılabilir.
tek tırnak da çift tırnak gibi string içeriğini gruplayabilir ama tek tırnak içinde başka bir şey yorumlanmaz.
Ters tırnak içeriği sanki başka bir komutmuş gibi değerlendirir.
kafanız karıştı değil mi ?
tabloyu inceleyin.
Çift tırnak
Tek tırnak
Ters tınak
echo foo > file.txt
echo bar >> file.txt
THEFILE=file.txt
echo “wc –l $THEFILE”
echo foo > file.txt
echo bar >> file.txt
THEFILE=file.txt
echo ’wc –l $THEFILE’
echo foo > file.txt
echo bar >> file.txt
THEFILE=file.txt
echo ‘wc –l $THEFILE‘
Sonuç:
wc –l file.txt
wc –l $THEFILE
2
3 Story Problemleri
böylecesiz tırnakları değişkenleri wildcardları , yönlendirmeyi anladınız vedunya ya hakimsiniz . o halde siz bir dizindeki tum dosyalarınuzantısını .html yapmak istiyorsunuz
3.1 Döngüler
Shell bir kaç çeşit dongüyü destekler. Şimdi bunlardan for while ve until i inceleyelim .
3.1.1 For-Loops
2 tip for dongusu var. c- stil ve list stil. c-stil donguyu örnekle açıklamak kolaydır.
for (( I = 1; $I <4; I = $I+1)); do
echo $I
done
buscript ayrı satırlara 1 2 3 yazar. C deki for döngüsü gibi 1. kısımdailk deger atanır. 2. kısımda test edilir. 3 . kısımda artış sağlanır.
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 :
for F in ‘ ls ~/*‘ ; do
echo $F
done
shell string i in ve ; arasında ayrıştırır ve liste elemanlarına atar.
liste de ki her eleman için F değişkenine listenin her elemanın değeri atanacak ve döngünün içeriği uygulanacak. .
shelllistedeki 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 karakteriiçeriyorsa , onun ismi bölünür ve farklı satıra koyulur.bu örnekte.html uzantısını şu şekilde ekleyebilirsiniz.:
for F in *; do mv $F $F.html ; done
oh. size söylemedim mi ?
döngüler tek satır gibi ifade edilebilir.
fakat sizinde gördüğünüz gib değişkenlerin adları nasıl karışık. scriptleri şu şekilde yazmak daha güvenli;
for F in *; do mv ${F} ${F}.html ; done
3.1.2 Whıle ve Until döngüleri
bu döngü ondan ne dilerseniz aynen yapar. while döngusu şu şekildedir.:
F=1
while [ $F -lt 5 ] ; do
F= $ (( $F+1))
echo “Not done yet”
done
until döngüsü karşılaştırma kısmı hariç aynıdır.
3.2 Diğer Değişkenler
3.2.1 Sayılar
sizbelkide şimdiden söylediniz ki gördüğümüzden daha fazla shell değişkenivar. Pek çok zaman değişkenlere string gibi davranılır. Bununla beraberbazen sayı gibi de davranırlar. Bir değişkene sayı gibi davranmak içinonu çift parantez içine alırız . Örneğin üsteki örnekte F=$(($F+1)) . Değişkenler aynı zamanda bir unix aracı olan test tarafından işlenincede sayı gibi davranırlar.
Not: test [ ] işaretleri arasında yazılır. Eğer test in dogru yazımını öğrenmek isterseniz konsol da man test yazıp bakabilirsiniz.
3.2.2 Daha iyi string manuplasyonu
Malesefshell 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 iledeğişmeniz gerektiğinde ne dersiniz burda sed e görev düşüyor. (sed standart düzenli ifadeleri sizin için yorumlar ) . şöyle bir şey yapabilirsiniz.
( tırnakların kullanım şekillerine dikkat):
for F in *; do
mv $F ‘echo $F | sed ’s / / _/g’ ‘
done
benzer olarak eğer ss ile kendi ip nizi bulmak isterseniz , awk ı kulanbilirsiniz. awkgenel olarak sadece boşlukla bölümlenmiş text stringleri tanımlamakiçin kullanılır. cut ile beraber kullanıldığında ( stringleri özelkarakterler le bölümler ) şöyle birşeyler yapabilrisiniz.:
MYIP= ‘/sbinz/ ifconfig eth0 | grep “ inet addr:” awk ’ {print $2 }’ | cut –d: ~ f2’
3.3 Koşullar
2 temel koşul var. ( daha önceden bahsetmedim ) . ilk ki if . nasıl kullanıldığını anlamak çok kolay dır ama syntax I biraz gariptir. Nasıl çalışıyor bakalım.
if [ $F -eq 1 ]; then
echo "Equals One"
elsif [ $F -eq 2 ]; then
echo "Equals Two"
else
echo "Equals Neither"
fi
if deyiminin kapanışı if in tersten yazımı şeklinde olduguna dikkat edin. Case deyimi de aynı şekildedir. If ile aynı iş yapan case deyimi söyledir.
case "$F" in
"1")
echo "Equals One"
;;
"2" )
echo "Equals Two"
;;
* )
echo "Equals Neither"
;;
esac
4 Gelişmiş scriptler.
Henüzmake komutunu öğrenmediğinizden .tex dosyalarını .pdf dosyasına ve .**LATEX dosyalarınızı .dvi .ps ve .pdfs dosyalarına manuel derlemeyideneyebilirisiniz. Bunun için 2 seçeneğiniz var. Şiddetle tavsiyeedilen make komutunun öğrenmek veya ss yazmak.
** LATEX: genellikleunix tabanlı işletim sistemlerinde kullanılan, bir text editörü. Metiniş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 formullerinsadece klavye kullanarak bir kaç basit işaretle oluşturuluyor olmasıçok hoş.
wordgibi programlarin aksine ’what you see is what you get’ olmayan wordprocessor. yazdiklarinizi compile edip dvi yapar sonra da postscriptolarak gorursunuz. formati belirleyen siz degil kullandiginiz styleveya class dosyasidir. dolayisiyla formatin disina cikmamaniz garantiyealinmistir. bir de scientific workplace gibi kolaylastirilmis cesitleribulunur, profesorler de guzel guzel paper ve kitap yazsinlar diye.
4.1 Ön tanımlı değişkenler
4.1.1 Sayılar
Sstext dosyalarında ***executable bit tanımladığınızda normal programgibi çalıştırılabililir. Normal program gibi arguman veribilebilir.Sayılar değişkenleri $0 $1 $2 vs şeklindedir. Bir ss de $0 ss isminibelirtir. $1 birinci argumana denk gelir. Eger arguman yoksa değişkenbirşey içermez.
make problemini çözmek için bu scripti yazmalıyım
#!/bin/bash
latex $1.tex && dvips -o S1.ps $1.dvi && ps2pdf $1.ps
Eğer ben bu scripti latexit olarak adlandırırsam ve kendi dosya yoluma koyarsam latexit foo komutu ile foo.tex dosyasını foo.pdf ye derleyebilirim.
*** executable bit unix’te bir dosyanın özelliklerinde executable olup olmadığını tutan bit
owner, group ve herkes için üç adet bulunur
4.1.2 Dinlenme
Pek çok ön tanımlı değişken vardır. Işte onlar:
$* Standart olan bu komut satırı parametrelerinin tümünü belirtmek ve/veya kullanabilmek amacıyla
$@Standart olan bu komut satırı parametrelerinin tümünü belirtmek ve/veyakullanabilmek amacıyla boşluklar la bölümlenmiş şekilde genişletir.
$# Komut satırı parametreleri sayısını öğrenme
$? En son icra edilen komutun dönüş kodunun elde edilmesini sağlar. ( komut başarılımı değilmi ?)
$$ SHELL deki PID leri verir.
$! Son komutun PID ini verir.
$_ Bu da tam dosya ismini veya son çalışan komutun son argumanını verir.
4.1.3 Diziler
Sanırım daha önceden bahsetmediğim değişkenler diziler olabilir.
FOO[1]=bar
echo ${FOO[1]}
4.2 Ön Tanımlı fonksiyonlar.
Shell de yüzlerce yazılmış ön tanımlı fonksiyon vardır. Eğer onları hatırlamak istersenız man sayfalarını okuyun.
Bunlardan benim en fazla kullandığım ikisi read unset ve eval dir.
Bunlar diğer dillerideki ne benzer şeyler yaparlar.
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” ile yapılır.
Çalışankabuk programları içerisinde kullanımı söz konusu olan ve herhangi birdeğeri bulunan ve/veya bulunmayan bir değişkeninin tanımının silinmesiişlemi, "unset" komutu yardımıyla yapılır.
Sistem komutlarının ve/veya programlarının doğrudan kullanımı söz konusu olduğunda, "eval" komutu da
kullanılabilir.
4.3 Fonksiyonlar
Kendi fonksiyonlarınızı tanımlamak oldukça eğlencelidir. Bunu açıklamanın en kolay yolu örnekle anlatmaktır.
function add_to_path { INPATH=0
for F in ’echo $PATH | sed ’s/:/ /g’ ’ ; do
if [ $1 == $F ] ; then
INPATH=1
break
fi
done
[ $INPATH –eq 0 ] && PATH="$PATH:$1”
unset INPATH
5 Scritlerin ötesi
Bubölümde shell ve komut yazma ile alakalı pek kimsenin bilmediği amahayatlarını daha kolaylaştıracak küçük bilgilerden bahs edilmekte.
5.1 Readline Güzelliği
Birzamanlar bir unix hackerı shell de script yazarken bir hata yaptı ( buhacker için nadir bir şeydi ) . backspace tuşuna bastığı zaman consolpencersinde ~Hyazdığını gördü. Bu hackerı oldukça üzdü ve yön tuşlarıyla geri gidipkomutu düzeltmeyi denedi. Komutlarını sıfırdan tekrar yazarken bunuönleyecek şeyi çözdü . scriptini tamamladıkdan sonra bir kütüphanedosyası yazdı . bir libreadlien oluşturdu ve güzeldi.
Libreadline 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şuylakomutlarınızı tamamlamanızı sağlar . standart emacs veya vi komutlarınıkullamanızı sağlar.
5.2 Unix araçları
Buliste Matt Hyclak ın listesinden ödünç alınmıştır. Bu liste dekikomutları bilmeniz gerekmektedir ve bunlar eğer ss de pek çok şeyiyapabilmeniz için oldukça kullanışlıdır.
Awk Komutların çıktılarındaki bilgiler üzerinde değişik uygulamaların yapılmasını sağlayan bir komutdur.
Cat Stdin ve herhangi bir dosyayı alır ve onları stdout a aktarır.
Cut Bir dosyanın herbir satırında yer alan byte ların, karekterlerin veya alanların kesilerek görüntülenmesini sağlayan komut
Date gerçek zamanı ve tarihi yazar.
Diff 2 palintext unix dosyası arasındaki farkı bulur.
Echo terminalde bir karakterin ekranda gorunmesi i$lemi
Find Aradığınızı bulmayı sağlar.
GrepMetin dosyasında/dosyalarında bir kalıp dizgisinin aranmasını sağlayan komut
Less Unix’te stdin’den gelen file’i sayfa sayfa gosteren komut..
Locate Finddan daha iyi bir bulucudur. Eger siz bir dosyalarınız içinendişelenirseniz locate periodik olarak tüm dosyalarınızdan oluşan birdatabase oluşturur ve arama zamanını son derece azaltır.
lynx or links consolda çalışan bır web browserdır. X in çalışmadığı zamanlara eğer birreferansa ihtiyacınız varsa lynx sizi kurtarır. Links lynx den birazdaha iyidir.
Man unix in el kitabıdır. Script için kullanışlı değildir ama öbür komutları öğrenemediyseniz bunu bari öğrenin.
More standart unix pager ıdır . stdin’den gelen file’i sayfa sayfa gosteren komut
Printf echo dan biraz daha iyi . i yeni satır a dönüştürür.
Ps sistemde çalışan uygulamaları listeler.
Sed stream editor.. unix’te bir gui’ye sahip olmayan command line parameter’larla calişan text editor
Sort Metin tabanlı dosyaların sıralanmasını sağlayan komut
Test Ifadeleri test için kullanılır ve 1 veya 0 değerini döndürür.
We Bir dosya hakkına karakter sayısı satır sayısı toplam kelime gibi istatistik verir.
Which Bir komutun tüm dosya yolunu gösterir.
who/w Sistem deki kullanıcıları listeler.
Xargsbir 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
5.3 Konfigürasyon dosyaları
Neoldu tahmin edin. config dosyaları küçük birer ss leridir. onlarınkısıtlı alanı yoktur. shell tarafından direk çalıştırılabilir. ve altshell tarafından çalıştırılamaz. Bana inanmadınız mı?
#.bashrc
if [ -f ~/.bash_profile ]; then
. ~/.bash_profile
fi
# shell info
PS1="/dev/null << "
PS2="<< "
#User specific aliases and functions
alias ls= ’ls –color’
alias lsl= ’ls –color -lh’
alias quota= ’quota -v kwheeler’
export PATH=$PATH: /usr/ccs/bin
Gayet ustaca değil mi?
6 Örnekler
6.1 Desktop arka resmini değiştirme
X ortamında ki background resmini resim klasöründen rastgele bir resim ile değiştirir.
#!/bin/bash
PICTURES=/home/kyle/bgs
COUNT=’ls $PICTURES | wc -l’
WHICH=$((RANDOM%COUNT))
WHICH=$((WHICH+1))
COUNT=0
for F in $PICTURES /*; do
COUNT=$((COUNT+1))
if [ SCDUNT -eq $WHICH ]; then
Esetroot "$F"
break
fi
done
6.2 Mesajları kontrol etmek
Bunu niçin yapmak istediğiniz hakkında fikrim yok ama bunda bölüm 1.3 de bahsetmiştim.
işte o kodlar:
#!/bin/bash
PATTERN="FAILED"
while true; do
if [ ‘grep "$PATTERN" /var/log/messages | wc -l’ -eq 5 ]; then
printf ’To: me@foo.gov Stuff Went Bad!’ | /usr/sbin/sendmail -t
fi
done
|