Jump to content
Forumu Destekleyenlere Katılın ×
Paticik Forumları
2000 lerden beri faal olan, çok şukela bir paylaşım platformuyuz. Hoşgeldiniz.

Linux Kullanıcı Eğitimi : Ders -3-


MartinLGore

Öne çıkan mesajlar

Evet 3. dersimize geldik.. Lafı fazla uzatmadan dersimize geçiyoruz..


DERS -3-

Kabuk betikleri

Kabuk betikleri (ing. script) aslında özel bir yazım şekli olan, çalıştırılabilir metin dosyalarıdır.
Betikler metin düzenleme programları (vi,pico,nano) ile yazılabileceği gibi doğrudan kabuk üzerinden cat > betikismi komutu ile de yazılıp, CTRL + D tuş kombinasyonu ilede kayıt edilebilir.

Betikler kaydedildikten sonra chmod +x betikismi komutu ile her kullanıcı tarafından çalıştırılabilir hale getirilir.
Betiği çalıştırmak için ./betikismi komutu kullanılabilir.

Örnek bir kabuk programı

-bash-2.05b$ cat patidene
# Bu isaretle basliyan satirlar bizim aciklama satirlarimizdir.
# bu satirlara istedigimiz her seyi yazariz, betik bunlari dikkate almaz.
echo "Selaminaleykum paticik halki."
echo "Kullanici adim:" $USER "ve su anda bulundugum klasor" $PWD "'dir."
echo "Bu dizinin icindekiler de"
# ls -l komutu dosya içerigini detayli gostermek icin kullanilir.
ls -l
echo "ahanda bunlardir."
-bash-2.05b$


patidene dosyasının içindekileri incelemek için ileride daha detaylı olarak değineceğimiz cat komutunu kullandık.
Yukarda da gördüğünüz gibi # ile başlayan satırlar bizim betigimizin açıklama satırlarıdır ve bu satirlar kabuk tarafından dikkate alınmaz.
echo komutu standart çıktıya yazı yazdırmak için kullanılır.
Bu betiği ./patidene olarak çalıştırırsak,

[root@localhost pati]# ./patidene
Selaminaleykum paticik halki.
Kullanici adim: root ve su anda bulundugum klasor /root/pati 'dir.
Bu dizinin icindekiler de
total 8
-rw-r--r-- 1 root root 0 Nov 22 09:35 baskadosya
-rw-r--r-- 1 root root 0 Nov 22 09:36 lahavle
drwxr-xr-x 2 root root 4096 Nov 22 09:35 mp3
-rwxr-xr-x 1 root root 378 May 31 2004 patidene
ahanda bunlardir.
[root@localhost pati]#


çıktısını alırız..

Kontrol İşlemleri

Kabukta kontrol işlemleri test durum yada [ durum ] kalıpları kullanılarak yapılabilir. Bu komut yardımıyla mantıksal işlemler yapılabilir, sayılar ve hatta diziler karşılaştırılabilir. test komutundan sonra kabuğa bir çıkış durumu değeri gönderilir. Komut başarılı olarak işletilmiş ise bu değer 0'dır, değilse 1'dir. Bu değer $? adlı değişkende tutulur.
Anahtar sözcük olan test'den sonra operatörler yada karşılaştırılacak olan değerler yazılır. Her operatör mantıksal bir işleme denk gelir. test komutunda yaygın olarak kullanılan aritmetik operatorler şunlardır;

-gt : büyük
-lt : küçük
-ge : büyük ve ya eşit
-le : küçük veya eşit
-eq : eşit

Örnek bir test çıktısı,

[root@localhost pati]# nedanko=30
[root@localhost pati]# test $nedanko -eq 40
[root@localhost pati]# echo $?
1
[root@localhost pati]# test $nedanko -lt 40
[root@localhost pati]# echo $?
0
[root@localhost pati]#


gibidir.

if-else Kalıbı

if kalıbı bir linux komutunun çalışmasını kontrol eden yerleşik bir komuttur. Her if kalıbı bir fi komutu ile bitmelidir.

Kullanımı:

if linux komutu
then
komut 1
komut 2
else
komut 3
komut 4
....
fi

Hemen her programlama dilinde olan if kalıbı bir Linux komutunun çalışmasını kontrol eder. if kalıbı içerisinde bulunan Linux komutu çalıştırılır ve komutun çıkış durumu göz önünde bulundurularak ardından gelen then deyimiyle birlikte devamlı işletilir.
if komutu daha önce değindiğimiz test ile birlikte kullanılabilmektedir. Aşağıdaki betik buna güzel bir örnektir.

[root@localhost pati]# cat patidene2
#!/bin/bash
# Yukardaki satir bu betigin bash kabugunda calistirilacagini belirtir.
echo "0 ile 100 arasinda bir sayi girin:"
read sayi
# Kullanicilardan girdi almak icin read komutu kullanilir.
if [ $sayi -lt 10 ]
then
echo "Sectiginiz sayi tek basamaklidir."
elif [ $sayi -lt 100 ]
then
echo "Sectiginiz sayi 2 basamaklidir."
else
echo "0 ile 100 arasinda dedim hayvan herif..."
fi
[root@localhost pati]#


Çalıştırdığımızda,

[root@localhost pati]# ./patidene2
0 ile 100 arasinda bir sayi girin:
7
Sectiginiz sayi tek basamaklidir.
[root@localhost pati]# ./patidene2
0 ile 100 arasinda bir sayi girin:
68
Sectiginiz sayi 2 basamaklidir.
[root@localhost pati]# ./patidene2
0 ile 100 arasinda bir sayi girin:
190
0 ile 100 arasinda dedim hayvan herif...
[root@localhost pati]#


gibi bir çıktı alırız..






Bu dersimizde bu kadar.. Bi dahaki dersimizde dosya sistemleri ve dosya hiyerarşisine gireceğim.. Herkese iyi günler..[signature][hline]susturamassın beniii
durduramassın beniii
ben kötüyüm sen iyimiyeaaeaeaaaaaah

[Bu mesaj nedanko tarafından 31 Mayıs 2004 10:57 tarihinde değiştirilmiştir]
Link to comment
Sosyal ağlarda paylaş

dosya kopyalamayı silmeyi falan bi sonraki yazı da mı anlatıcaksın?

linuxta en çok kafamı karıştıran etrafta milyon tane dizin olmasıydı, ha bi de bir linux versiyonunda dosyaların renkleri değişikti böyle kimisi sarı-yeşil falan. eğer onlara da el atarsan çok büyük sevap etmiş olacan :D[signature][hline]KEDIDIR KEDI !
Link to comment
Sosyal ağlarda paylaş

Hmm sanırım atlanmış bir nokta var, veya üzerinden geçilmiş fakat farkedilmemiş.

Shell scriptleri bir interpreter a sahip herşeyden olabilir. Perl, PHP, Bash, Sh, etc. etc.. Örneğin yazdığınız bir PHP betiğini

~# php myscript.php

veya

~# php myscript

şeklinde çalıştırabilirsiniz. Fakat eğer siz interpreter 'ı script içinde belirterek çalıştırmak istiyorsanız, yapmanız gereken tek şey scriptin en başına

#!/usr/bin/php
....

şeklinde interpreteri belirtmek.. Bunu #!/bin/bash yaparsınız, #!/bin/sh yaparsınız #!/usr/bin/perl yaparsınız v.s. v.s. Artık o kısım size kalmış.

Interpreter'i belirtirken, çağırılacak interpretera çeşitli parametreler de ekleyebilirsiniz. Örn :

#!/usr/bin/php -c /myconfig.ini

falan gibi.. Şimdi -c miydi onu da hatırlamıyorum :) Ama kafanıza göre, interpreterin desteklediği her türlü parametreyi ekleyebilirsiniz.

Peki bu interpreter ları nerden bulacaksınız ? Çok kolay. Öncelikle hangisini kullanacağınızı seçin, sonra ;

~# which php
~# which perl
~# which bash
...
...

which komutu, size daha önceden tanımlanmış PATH ler arasında, aradığınız programın hangi konumda olduğunu gösterir. Bunu isterseniz

~# find / -name php -print

şeklinde de yapabilirsiniz.. Fakat bu size içinde php bulunanları gösterecektir. Bunu da

-regex şeklinde çözebilirsiniz..

Yani örneğin ^php$ falan şeklinde. ( detaylar için ~# man find )

Search olayına değinmişken indexleme ve hızlı aramadan da bahsetmek lazım. Özellikle gece 4 civarına falan ( eğer makina devamlı açıksa tabii hehe ) updatedb komutunun eklenmesi, diskteki dosyaların indexlenmesini sağlayacaktır.. Ya da istediğiniz herhangi bir an da kullanabilirsiniz updatedb yi.. Indexlenmiş dosyaları aramak ise çok kolay ;

~# locate


Hmpfs. 4. derste nedanko herhalde dosya işlemlerini anlatır. :)[signature][hline]There are 10 types of people in the world: Those who understand binary, and those who don't..
.. Sys. Adm. of Paticik(s), Ethernass, Ekohost, and many individual servers ..
Link to comment
Sosyal ağlarda paylaş

autoconf ve ondan bundan alarak :)

Hmm dur bakim.

http://www.cbc.umn.edu/~crow/projects/tutorial-autoconf/howto.html

gerçi pek sığ anlatmış.[signature][hline]There are 10 types of people in the world: Those who understand binary, and those who don't..
.. Sys. Adm. of Paticik(s), Ethernass, Ekohost, and many individual servers ..
Link to comment
Sosyal ağlarda paylaş

teşekkürler..
Ben biraz daha problemimi açağım.
GTK1.2 ile bir program yazıyorum(FileMon tarzı programın GUI'si)
Fakat benim derlediğim dosya doğal olarak başka bir makinede çalışmıyor.
Ben GTK'ını yerini öğrenmek için "pkg-config" diye bir program kullabıyorum.AMA bu programında sonradan yüklenmesi gerekiyor...

Benim istediğim direkt bu programa lüzüm kalmadan GTK'ının yerini görebilmek... ????

Birkaç configure dosyası açtım ama kaç yüz satır :) :) :)[signature][hline]1...2...3... ee ya sonrası ?
Criminal2's HomePage
Link to comment
Sosyal ağlarda paylaş

hayir hayir pkg-config neredeyse tum linux dagitimlarinda mevcuttur. pkg-config olmadan ./configure ile her paketin aranmasi olum olur zaten.

mesela gaim `i indir. GTK uzerine yapilmis bir program. configure i nasil yapmis adamlar, orada kesin vardir.[signature][hline]There are 10 types of people in the world: Those who understand binary, and those who don't..
.. Sys. Adm. of Paticik(s), Ethernass, Ekohost, and many individual servers ..
Link to comment
Sosyal ağlarda paylaş

motor diye bir program var (emre kardeşim bunu hatırlayacaktır), temelde bir editör ancak ve ancak senin yazdığın koda göre makefile ve configure yazıyor değişik bir program ncurses desteği bilem var, ancak gui konusunda bilgim yok. windowsta gui manyağıyımdır ama linuxu siyah beyaz severim, ilk startx yazdığımda 2.5 sene olmuştu başlayalı .)[signature][hline]Ethernass Dünyası Admin
Tıklayalım yardım edelim ...
Link to comment
Sosyal ağlarda paylaş

×
  • Yeni Oluştur...