Beruflich Dokumente
Kultur Dokumente
Linux zerinde kullancnn iletim sistemini kullanmas iin temel iki yol vardr. Bunlardan biri GUI olarak adlandrdmz ra!ik arabirimler dieri de konsol"s#ell olarak adlandrabileceimiz komut satr y$netimidir. %abuk &ro ramlamada aslnda konsoldan verilen komutlar belirli bir dzene uyarak altrmaktan ibarettir. 'ani konsoldan altrdmz komutlar bir dosyaya sras ile yazarak en basitinden bir s#ell scri&t yazm oluruz. (abiki belirli amalara y$nelmi &ro ramlar iin !onksiyon) dizi ) d$n ler ibi da#a st dzey ya&lar kullanmamz erekebilir ki *bas#+ bunlar !azlasyla salamaktadr.
%od yazmaya balamadan bir ek da#a ya&alm. 'az boyunca kodladmz $rnekleri sizlerde #er#an i bir Linux altnda yaz& altrabilirsiniz. ,dit$r olarak %-, altnda %edit) Gnome altnda Gedit kullanmanz tavsiye ederim. , er #er iimi konsoldan ya&mak istiyorum derseniz &ico) nano ya da .i ibi konsol tabanl edit$rleri de kullanmay deneyebilirsiniz. ,er elinizin altnda #ali#azrda bir Linux"U/I0 yoksa ve kuracak durumda da deilseniz internet zerinden cretsiz olarak 1#ell #esab salayan !irmalardan bir #esa& edinerek $rnek kodlar deneyebilirsiniz. #tt&2""333.ducta&e.net"4mit5a"!reeunix.s#tml adresi eitli Linux ve U/I0 sistemler zerinde cretsiz olarak s#ell #esabna sa#i& olmak isteyenler iin iyi bir balan noktas. Buradan bir #esa& edindikten sonra 6utty 117 &ro ram ile sunucunuza balanarak $rnek kodlar altrabilirsiniz.
La! !azla uzatmadan &ro ramlama dnyasnn o me#ur ilk &ro ram ile kodlamaya balayalm.. ,vet) *7ello 8orld9 * " *:er#aba dnya9+ &ro ramndan ba#sediyorum.
;9"bin"bas# ec#o *:er#aba -unya9< B$ylece ilk s#ell scri&t=betik>imizi yazm olduk. 'ukardaki basit &ro ramda dikkatimizi eken bir satr var #!/bin/bash) bu satr sonraki alt satrlarn #an i kabuk tara!ndan yorumlanacan bildiren standart bir tanmdr ve #er bas# scri&tinde olmaldr. ,er bas# &ro ram "bin"bas# deilde !arkl bir yerde ise scri&tlerin bana o deer yazlmaldr. Linux altnda bir &ro ramn #an i dizin altnda olduunu 3#ic# komutu ile bulabiliriz. ? 3#ic# bas#
"bin"bas# 1cri&timizi kaydettikten sonra altrma #akk verelim. Bunun iin Linux dnyasnda c#mod komutu kullanlr. 1cri&timizi #ello.s# ad ile kaydettiimizi varsayarsak aadaki komut ile scri&timize altrma #akk vermi oluruz.
evresel Deikenler
7er iletim sistemi eitli amalarla kullanlmak zere evresel deikenlere sa#i&tir. Linux ibi sistem y$netiminin ounlukla komut satrndan ya&ld sistemlerde bu deikenlerin $nemi bir kat da#a !azladr. Linux altnda sk kullanlan evresel deikenler ve manalar2
A @ anki kullancnn ev dizinini $sterir A @ anki kullancnn kim olduunu $sterir A %ullancnn komut satrndaki iaret= #uzey!eD linux ? ibi> A %ullancnn komut yrtt kabuk ismi
Eevresel deikenleri ayn normal deikenler ibi kullanabiliriz. #echo $HOM /root $echo $!H "" /bin/bash
Deikenler
6ro ramlama dillerinin vaz eilmez $elerinden biri deikenlerdir. Bas# ile birlikte deiken tanm ve kullanm olduka kolaydr. -ier dillerden !arkl olarak tanmladmz deikenin ti&inin belirtilmesine erek yoktur) deikenin kullanld yere $re ti&i belirlenir. ? adimA H7uzey!e @/FLI ?ec#o ?adim Huzeyfe ONAL Fyn deikeni $adim=Huzeyfe ONAL seklinde de ya&abilirdik. -eiken kullanrken i!t trnak =* +> ya da tek trnak=H I> kullanmann !ark 2 * + arasnda kullanacamz baz $zel karekterler BF17 tara!ndan !arkl komutmu ibi ilem $recektir . :esela bas# iin 9 karekterinin $zel bir anlam vardr ve biz bu karekteri * * arasnda kullanrsak ekrana 9 karekteri baslmazda 9 karekterinin bas# iin i!ade ettii deer baslr. Bu ti& #atalardan kanmak iin yeri eldiinde tek trnak =H H> kullanlr. Ei!t trnan aksine tek trnak arasnda ald tm karekterleri olduu ibi yanstr.
Ealtrlan komutu => arasna alarak ve bana ? iareti koyarak deikene atama ya&ar ve istediimiz yerde kullanabiliriz) nasl mJ KrnekL
Mlk satrda "etc dizini listelenerek ierisinde ab kelimesi=birleik ab karekterleri> een tm dosyalar :'NIL,1 deikenine atanyor. 1onraki satrda ise bu deikenin ierii ekrana baslyor. Mlk satrdaki *' * karekteri Linux dnyasnda &i&e olarak eer ve bir komutun ktsn bir sonraki komuta irdi olarak aktarmaya yarar) yani ls "etc"nin kts re& komutuna &arametre olarak aktarlm
()el Deikenler*
Bas# ile &ro ramlama ya&arken kullanabileceimiz baz $zel deikenler vardr. Bunlar kullanmak iin tanmlamamz erekmez. :esela bu deikenlerden ?O alan &ro ramn adn verirken ?C ilk &arametreyi ) ?P P. &arametreyi ve ?; deikeni de to&lam &arametre saysn $sterir. ;9"bin"bas# ec#o *&ro ram ismiA ?O+ ec#o *ilk &arametreA ?C* ec#o *ikinci &arametreA?Pn+ ec#o *(o&lam &arametre sayisiA?; * $ */test*sh parametre+, parametre+program ismi=test.sh ilk parametre= parametre ! ikin"i parametre= parametre # $oplam parametre sayisi=%
#!/bin/sh echo n "Adinizi Gi iniz! " e"d n"me echo "Me h"b" $n"me !"
1cri&timize ad.s# olarak adlandr& altralm $chmo& .// a&*sh $*/a&*sh Adinizi &iriniz' Huzeyfe ONAL (erhaba Huzeyfe ONAL ) Bead komutuna Qt &arametresi vererek kullancnn belirli bir sre iinde iri ya&masn salayabiliriz. ,er belirlene srede kullanc #er#an i bir ey irmezse bir sonraki adm ileme sokulur yani kullanc #akkn kaybetmi olur. Benzer ekilde kullancnn irdii verileri ekrana yazmak istemezsek Qmesela &arola ibiR read komutunu Qs &arametresi ile denemeliyiz.
(rnekL ;9"bin"bas# ec#o Rn <S saniye icinde iris ya&malisiniz9 T < i! read Rt S res&onseL t#en ec#o <Basarilar) S saniyeyi ecirmediniz< else ec#o <Biraz da#a #izli yazmalisiniz9< !i ec#o Rn <%ullanici Fdiniz2<
read Rt U user ec#o Rn <6arolaniz read Rs &arola ec#o <?user kullanicisi ve ?&arola si!resi ile sisteme iris ya&tiniz9< $*/a*sh % saniye i"inde giris yapmalisiniz) * aa!!%% +asarilar, % saniyeyi ge"irmediniz -ullani"i Adiniz'Huzeyfe .arolaniz ' Huzeyfe kullani"isi /e Deneme12% sifresi ile sisteme giris yaptiniz) 2<
0ritmetik ilemler
(emel U ilemi kullanarak bas# altnda ileri dzey matematik ilemleri ya&abiliriz. Bas# altnda aritmetik ilemler iin ?==>> ya&s kullanlr. KrneklerL
$ echo $## $00 / % && 33
$ */sa4i*sh +ir sayi girini * 0 &irdiginiz 1ayi 0 &irdiginiz sayi tektir. $*/sa4i*sh +ir sayi girini * #2223 &irdiginiz 1ayi #2223 &irdiginiz sayi "ifttir
56 $oul De4imi
7emen #er &ro ramlama dilinde kendine yer bulan IN ya&s bas# &ro ramlamada da karmza kyor. Basitce bir arta bal olarak &ro ram iletmeye yarayan IN ya&s scri&tlerimizi da#a kontroll yazmamza olanak salyor. Bas# scri&tlerindeki temel i! ya&s aaddaki ibidirL
i ! "art #
then pr$gra%&g$'(esi i
! )$"ul #
! )$"ul, #
)$%utlar&i
Bu ya& ile biraz da#a elimi koullu ya&lar kullanabiliriz. Mlk uyan eli! koulundan sonra &ro ram i! ya&sn terkeder. ,er i! ya da eli! artlarndan birine uymazsa sra elseIye elir ve burada verilen komut uy ulanr.
KrnekL
i ! .$sayi. /e0 , #
! .$sbt. = .,. #
ilk $rnekde aritmetik bir karlatrma ya&lrken ikinci $rnekte strin karlatrmas ya&lyor. 1trin karlatrma ilemlerinde deiken ve karlatrma ya&lan tara! mutlaka * + arasnda verilmelidir) aksi takdirde #ata alabilirsiniz.
7likisel Operat8rler
Bir $nceki aritmetik i! $rneinde QeZ i!adesi kullandk) &eki ne ie yarar bu QeZ ve benzeri i!adelerJ Bu i!adeler bas# &ro ramlamada kullanlan $zel karlatrma o&erat$rleridir ve #er birinin anlam vardr. =In ilizce>. Fritmetik karlatrmalar iin kullanlan bu o&erat$rlerden bazlar ve anlamlarL
.e/ .l0 E"ittir )232)t2r
.9 9ile . 9ile
D$sya sira(an bir ($sya %i D$sya 'ar 'e $)unabilir (uru%(a %i D$sya 'ar 'e ya45labilir (uru%(a %i D$sya 'ar 'e 3al5"t5r5labilir (uru%(a %i 6e(e 6e(e ($sya bir (i4in %i ($syan5n b$yutu s5 5r(an b2y2) %2
." .o
i9 = .n "$s0 $" ." .n "$s0 -" > 0hen echo ? $s0 $ (e $s0 - bo40@ ? 9i
(rnek9 \
i ! $'ar = .Yes. # then ech$ .Deger = Yes. eli ! $'ar = .7$. #
:ase ;ap#s#
]ase ya&s i!Rt#enRelse ya&snn biraz elimi versiyonudur. Bir deikene ait oklu seim vardr ve bu seimlerden #er biri !arkl bir deeri temsil etmektedir. 7an i deiken arta uyduysa o deikenin temsil ettii komut yrtlr. ,er #er#an i bir koula uymazsa ^> ile balayan satrdaki komut devreye irer. ]ase temel ya&sL case se4enek in durumC> komutlar LL durumP> komutlar LL durumS> komutlar LL ^> komutGx esac
1akvim (rnei9 Fadaki scri&t aylar ve isimleri eletirmitir. Bu scri&ti elitiri& kullancdan ayI say olarak irmesini isteyi& karln yazdrabiliriz.
9!/bin/sh
<, | ,) ech$ .M$nth is March.>> <? | ?) ech$ .M$nth is @pril.>> <A | A) ech$ .M$nth is May.>> <B | B) ech$ .M$nth is =une.>> <C | C) ech$ .M$nth is =uly.>> <D | D) ech$ .M$nth is @ugust.>> <E | E) ech$ .M$nth is Septe%ber.>> ;<) ech$ .M$nth is Fct$ber.>> ;;) ech$ .M$nth is 7$'e%ber.>> ;*) ech$ .M$nth is Dece%ber.>> G) ech$ .8ecersi4 Hara%etre!!.>> esac
<O1= Her sat#r#n sonuna 99 ekleme)sek program u4&uu case koulunu &eil t>m koullar# ekrana basacakt#r
1ay bulmaca 1cri&tiL ;9"bin"bas# ec#o Rn <C ile S arasinda bir sayi iriniz T < read c#aracter case ?c#aracter in C > ec#o <Bir irdiniz.< LL P > ec#o <Iki irdiniz..< LL S > ec#o <Uc irdiniz.< LL ^ > ec#o <bir ile uc arasinda bir de er irmediniz9< ,sac
Fyn scri&ti i! ya&s kullanarak yazmak isteseydik aadaki ibi olacakt. 7er iki scri&ti incelersek i! ile case arasnda !ark da#a iyi anlam oluruz
9!/bin/bash
ech$ /n . ile , arasin(a bir sayi girini4 I . rea( character i ! .$character. = .;. #> then ech$ .Jir 8ir(ini4+. else i ! .$character. = .*. #> then ech$ .I)i gir(ini4++. else i ! .$character. = .,. #> then ech$ .Kc gir(ini4+++. else ech$ .Yanlis (eger gir(ini4+.
i i i
scri&t altrldnda sras ile @cak subat ... okuyarak ekrana basacaktr.
Bir dier $rnekle konuyu &ekitirelim2 "etc" dizininde r ile balayan tm dosyalar listelenerelk aralarnda *dizin+ $zellii tayanlar ekrana dizin ad =dir>) dizin $zellii tamayanlar ise dosyaGadi =!ile > ekilde yazdrlacaktr.
9!/bin/bash
then ech$ .$%y ile ((ir). else ech$ .$%y ile ( ile)L
i ($ne
!istem&eki kullan#c#lar# "isteleme !cripti "etc"&ass3d dosyasnda bulunan kullanclar listelemek iin aadaki scri&ti kullanabiliriz. 1cri&t ierisinde kullanlan a3k bas# ibi bir scri&t dilidir ve scri&t ierisindeki $revi "etc"&ass3d dosyasndaki satrlar 2 karekterine $re ayrtr& ilk kolonu semektir. ;9"bin"bas# 6F118-GNIL,A"etc"&ass3d aAC !or name in ?=a3k RN2 _`&rint ?Ca_ b <?6F118-GNIL,< > do ec#o <U1,B ?a A ?name< let <a WA C< done exit O
$chmo& .// user*sh $*/user*sh 5167 8! = root 5167 8# = daemon 5167 8% = operator 5167 82 = bin 5167 89 = smmsp 5167 8: = popa%d 5167 8; = sshd 5167 8< = portmap 5167 80 = identd
;9"bin"bas#
%y'ar=< Mhile ! $%y'ar /ne ;< # ($ ech$ $%y'ar %y'ar=$(( $%y'ar N ; )) ($ne
myvar deikeninin OIa eitle ve karlatrmaya bala) deiken CO olmad mddete ekrana deikenin deerini yaz ve deerini bir artr. until 3#ileIin tam tersi denilebilir. Fadaki $rnekte dekenimiz CO olana dek ekrana yaz diyoruz. ;9"bin"bas#
%y'ar=< until ! $%y'ar /e0 ;< # ($
6onksi4onlarla ilemler 6ro rammz iinde sk kullanacamz baz ya&lar bir dzen altnda tanmlayarak devaml kullanabiliriz. :esela &ro rammz ierisinde kullancdan veri alacak bir b$lm olsun ve biz bu b$lm birden !azla yerde kullanmak isteyelim) normalde #er kullanacamz yerde idi& ayn eyleri yazmamz erekecekti. @ysa bu blou !onksiyon olarak tanmlarsak kullanmamz ereken yerde sadece !onksiyonu adyla armamz yeterlidir. 1emel 6onksi4on ;ap#s#9 Bas# &ro ramlamada iki eit !onksiyon tanm ya&labilir. 3unction fonksiyon_Adi `
komutlar
a ya da
fonksiyon_adi komutlar
=> `
a KrnekL ;9"bin"bas# ; ekrana #ello yazmak iin kullanlan !onksiyon #ello=> ` ec#o <1u an #ello=> !onksiyonunu ca irdiniz..< a ec#o <#ello=> !onksiyonu ca riliyor..< #ello ;-i er tanimlama yontemi !unction #ello=> ` ec#o <#ello=> !onksiyonunu ca irdiniz..< a
Nonksiyon tanmlarken dikkat edeceimiz bir #usus. /ormal dillerde !onksiyon iinde tanmlanan deiken sadece o !onksiyon ierisinde eeli olurdu. 7albuki bas#Ide !onksiyon iinde tanmlanan deiken tm &ro ram boyunca akti! olur. Bunu en ellemek yani !onksiyon iinde tanmlanan deikenin $mrn !onksiyon ile snrlamak istersek local deiken tanm kullanrz. "ocal de iskenA+bu de isken yereldir+ ibi
;9"bin"bas# -e iskenACOO Nunction #esa&lama ` Local de iskenAcO ,c#o Rn * Bir sayi iriniz2+ Bead sayi ,c#o *sayiWde iskenA?== ?sayi W ?de isken >>+ a #esa&lama 1cri&ti altrlrsa ekrana *1ayiWde iskenAcOW irdiinizGdeer+ yazacaktr.
selecti$n= until ! .$selecti$n. = .<. #> ($ ech$ .. ech$ .HQF8Q@M ME7K. ech$ .; R J$s Dis) alanini 8$runtule ech$ .* R J$s belle) alanini 8$runtule ech$ .. ech$ .< R Hr$gra%(an ci)is ech$ .. ech$ /n SSeci%ini4i 8irini4TL rea( selecti$n ech$ .. case $selecti$n in ; ) ( * ) > press&enter >> ree > press&enter >>
< ) e-it >> G ) ech$ .Lut en ;U *U ya ( a< (egerini girini4L> press&enter esac ($ne
Di)iler -iziler benzer $zellikteki deikenleri ru&lamaya yarar. :esela yln aylarn bir diziye atayarak bu diziye ay adn verirsek elimizde CP elemanl bir dizi olur. FylarA=@cak 1ubat :art nisan :ayis 7aziran (emmuz F ustos ,ylul ,kim %asim Fralik > CP elemanl bir dizi. -izilerin indisi OIdan balar yani aylar dizisine bakacak olursak dizinin ilk eleman aylarXO[ Hdr.
$ur si ir B
i'e )