IRCForumları - IRC ve mIRC Kullanıcılarının Buluşma Noktası
  turkish chat



Instagram takipçi satın al
6Beğeni(ler)
  • 6 Post By Silencer

Yeni Konu aç Cevapla
 
LinkBack Seçenekler Stil
Alt 27 Nisan 2008, 15:26   #1
Çevrimdışı
Linux [ Kabuk islemleri ]




Sistem calıstıldıgı andan itibaren Bu andan sonra yapacağınız tüm işlemler bu kabuk programı tarafından yönetilir ve denetlenir. Kabuk, klavyeden girilen komutları çalıştırarak bir arabirim görevi yapar. UNIX (ve Linux) altında geliştirilen sayısız kabuk çeşidi ve bunların herbirinin kendine ait özelliği vardır. Her programcı kendi zevkine hitap eden kabuğu seçebilir, sistemde yeralan kullanıcılar farklı kabuklar üzerinde çalışabilirler.
O an hangi kabuk üzerinde yeraldığınızı öğrenmek için echo $SHELL yazın.

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
$ echo $SHELL /bin/bash

Sıkça kullanılan kabuklar,
sh (Shell ya da Bourne Shell): İlk UNIX kabuğu.
ksh (Korn Shell): sh uyumlu, birçok ek programlama özelliği içeren bir kabuk. Bu kabuk da yaygın bir kitle tarafından kullanılıyor.
bash(Bourne Again Shell): Kullanım kolaylığı bakımından en çok rağbet gören bash, GNU tarafından kaynak kodu olarak dağıtılıyor. bash sh ve ksh uyumluluğunu korurken, özellikle etkileşimli kullanıma yönelik (komut tamamlama, gibi) birçok yenilik de içerir. Bu yazının hazırlandığı 1997 Temmuz ayı başlarında Bash 2.0.1 sürümü çıkmıştı.
csh (C shell): Berkeley Üniversitesi'nde geliştirilen csh'in C diline benzer bir programlama yapısı vardır.
tcsh: csh'ın biraz geliştirilmiş hali.
Yukarıdaki kabuk programlarından sh, ksh ve bash birbirleriyle uyumludur ve yukarıda en ilkelden en gelişmişe göre sıralanmışlardır. Aynı durum csh ve tcsh için de geçerlidir. Kullanılan shell genellikle kişisel bir tercih nedeni olsa da, bütün sistem betikleri sh ile yazıldığından, sistem yöneticilerine sh ailesinden bir kabuk kullanmaları önerilir.
Kabuk programları genellikle /bin dizini altında yeralır. Kullanıcının sisteme girerken hangi kabuğu kullanacağı /etc/passwd dosyasında yeralır. Bunu değiştirmek için chsh (change shell) komutunu kullanabilirsiniz.

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
$ chsh Password: Changing the login shell for cagri Enter the new value, or press return for the default Login Shell [/bin/sh]: /bin/bash $

Sisteminizde NIS kullanılıyorsa chsh yerine yppasswd -s komutunu kullanmalısınız.

Kabuk islem'lerinde, Standar Girdi, Cikti ve Hata

Linux'ta, programın ekrana yazılan bilgiyi iki sınıf altında toplayabiliriz. Birincisi, olağandışı bir durumu bildiren standart hata, diğeri de her türlü verinin yazıldığı standart çıktı. Program çalıştığı andan itibaren bu iki kanal üzerinden akan bilgiler, programın çalıştığı sanal terminale yazılırlar. Program girdilerini ise standart girdi aracı olan klavyeden alır.
Eğer bu bilgiler bir ekran boyundan (25 satır) fazla tutuyorsa bazı satırlar programcının gözünden kaçabilir. Bunu önlemek amacıyla standart çıktı ve hata bir dosyaya yazılacak şekilde ayarlanabilir. Yönlendirme olarak da bilinen bu işlem UNIX altında (DOS'ta olduğu gibi) > karakteri ile gerçekleştirilir.
Örnek olarak o an bulunduğunuz dizinde yeralan dosyaları ekrana getirin:
Kod:   Kodu kopyalamak için üzerine çift tıklayın!
$ ls -al

Bu komut, standart çıktı olarak dosyaların bilgilerini ekrana getirecektir. Bu çıktıyı, bir dosyaya yönlendirelim ve dosyanın içeriğine göz atalım:

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
linux:~$ ls -al > liste linux:~$ cat liste total 16 drwxr-xr-x 5 sercan users 1024 Feb 13 13:10 . drwxr-xr-x 4 root root 1024 Jan 7 1980 .. -rw-r--r-- 1 sercan users 390 Feb 13 12:56 .Xdefaults -rw-r--r-- 1 sercan ftpadm 2016 Feb 13 13:09 .bash_history -rw-r--r-- 1 sercan users 1 Feb 13 12:57 .bashrc -rw-r--r-- 1 sercan users 163 Nov 24 1993 .kermrc -rw-r--r-- 1 sercan users 34 Nov 24 1993 .less -rw-r--r-- 1 sercan users 114 Nov 24 1993 .lessrc drwxr-xr-x 2 sercan users 1024 Jan 7 1980 .term -rw-r--r-- 1 sercan users 87 Feb 13 12:56 .xinitrc -rw-r--r-- 1 sercan users 2795 Feb 13 13:06 adres -rw-r--r-- 1 sercan users 0 Feb 13 13:10 liste drwxr-xr-x 2 sercan users 1024 Feb 13 12:54 mail drwxr-xr-x 2 sercan users 1024 Feb 13 12:54 perl -rw-r--r-- 1 sercan users 0 Feb 13 13:10 typescript linux:~$

> karakteri standart hatayı dosyaya yönlendirmez. Bu işlem için 2> kullanılır. Ama hatayı görebilmek için, hata yaratan bir komut yazmalıyız, değil mi?

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
$ ls /deneme /deneme : No such file or directory $ ls /deneme 2> hata $ cat hata /deneme : No such file or directory

Aşağıdaki komutun işletilmesinin ardından standart çıktı oku1 dosyasına, standart hata ise oku2 dosyasına yazılacaktır. Bu dosyaları komutu çalıştırdıktan sonra incelemek suretiyle neler olup bittiğini anlamak mümkün olur.

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
$ mkdir ~/deneme (deneme isimli bir dizin yaratır) $ touch ~/deneme/gecici (gecici isimli bir dosya yaratır) $ cat ~/deneme 2>oku2 >oku1

Kabuk, standart çıktı ve standart girdi için sırayla 2 ve 1 numaralarının kullanımına izin verir. Yukarıda yeralan son komutta, standart hata mesajları için 2 kullanılarak hataların oku2 dosyasına yazılmıştır. Aşağıda, çekirdek derlemek için sürekli kullandığım program yeralıyor. Yönlendirme sayesinde ekrana gelmesi gereken mesajlar kullanılmayan 9. sanal konsola yönlendiriliyor.

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
# make config # make dep > /dev/tty9 # make clean > /dev/tty9 # time make zImage > /dev/tty9

Son satırdaki time komutu, kendinden sonra gelen komutun ne kadar zaman içinde çalıştırıldığını gösterir. Çekirdek derlemede geçen zaman, makinanın gücü hakkında bir fikir verebilir. Peki ne hata, ne de çıktıyı ekranda görmek istemiyorsam ne yapmalıyım ? Bunun için standart çıktı ve hatayı biraraya getirerek yönlendirilen her çıktının kaybolduğu ``kara deliğe'' atmak yeterlidir:

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
$ ls /deneme > /dev/null 2>&1

Yukarıdaki komutun yazılış sırasına dikkat edin.
Standart çıktı ya da standart hatayı yönlendirirken, > işareti kullanırsanız: dosya yoksa, oluşturulur ve komutun çıktısı dosyaya yazılır. Dosya varsa, içeriği yok olur ve komutun çıktısı dosyanın yeni içeriği olur. Var olan bir dosyayının eski içeriğini tamamen silmek değil de komutun çıktısını dosyaya eklemek istiyorsanız >> kullanmalısınız. Bu durumda dosya varsa komutun çıktısı dosyanın eski içeriği korunarak sonuna eklenir, dosya yoksa oluşturulur ve komutun çıktısı dosyaya yazılır. Örneğin:

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
$ echo deneme1 >>deneme.txt $ cat deneme.txt deneme1 $ echo deneme2 >>deneme.txt $ cat deneme.txt deneme1 deneme2 $

Örnekte görüldügü gibi ilk komut deneme.txt dosyasını oluşturdu. İkincisi ise oluşan dosyanın içeriğini koru***** ikinci komutun çıktısını bu dosyanın sonuna ekliyor.
Standart hata ve çıktıya ek olarak UNIX'in desteklediği bir yönlendirme daha vardır: Standart girdi sayesinde bir dosyayı oluşturan satırlar, bir komut veya programa yönlendirilebilir. Daha önce bir metin editor kullanarak hazırlamış olduğumuz raporu patrona kısa yoldan göndermek için,

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
$ mail -s "rapor" patron < rapor.txt

Dosyanın içeriği, mail komutuna girdi olmuş ve rapor.txt dosyası patron kullanıcısına ``rapor'' konu başlığıyla e-posta ile gönderilmiştir.


İyi çalışmalar...
Sistem calıstıldıgı andan itibaren Bu andan sonra yapacağınız tüm işlemler bu kabuk programı tarafından yönetilir ve denetlenir. Kabuk, klavyeden girilen komutları çalıştırarak bir arabirim görevi yapar. UNIX (ve Linux) altında geliştirilen sayısız kabuk çeşidi ve bunların herbirinin kendine ait özelliği vardır. Her programcı kendi zevkine hitap eden kabuğu seçebilir, sistemde yeralan kullanıcılar farklı kabuklar üzerinde çalışabilirler.
O an hangi kabuk üzerinde yeraldığınızı öğrenmek için echo $SHELL yazın.

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
$ echo $SHELL /bin/bash

Sıkça kullanılan kabuklar,
sh (Shell ya da Bourne Shell): İlk UNIX kabuğu.
ksh (Korn Shell): sh uyumlu, birçok ek programlama özelliği içeren bir kabuk. Bu kabuk da yaygın bir kitle tarafından kullanılıyor.
bash(Bourne Again Shell): Kullanım kolaylığı bakımından en çok rağbet gören bash, GNU tarafından kaynak kodu olarak dağıtılıyor. bash sh ve ksh uyumluluğunu korurken, özellikle etkileşimli kullanıma yönelik (komut tamamlama, gibi) birçok yenilik de içerir. Bu yazının hazırlandığı 1997 Temmuz ayı başlarında Bash 2.0.1 sürümü çıkmıştı.
csh (C shell): Berkeley Üniversitesi'nde geliştirilen csh'in C diline benzer bir programlama yapısı vardır.
tcsh: csh'ın biraz geliştirilmiş hali.
Yukarıdaki kabuk programlarından sh, ksh ve bash birbirleriyle uyumludur ve yukarıda en ilkelden en gelişmişe göre sıralanmışlardır. Aynı durum csh ve tcsh için de geçerlidir. Kullanılan shell genellikle kişisel bir tercih nedeni olsa da, bütün sistem betikleri sh ile yazıldığından, sistem yöneticilerine sh ailesinden bir kabuk kullanmaları önerilir.
Kabuk programları genellikle /bin dizini altında yeralır. Kullanıcının sisteme girerken hangi kabuğu kullanacağı /etc/passwd dosyasında yeralır. Bunu değiştirmek için chsh (change shell) komutunu kullanabilirsiniz.

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
$ chsh Password: Changing the login shell for cagri Enter the new value, or press return for the default Login Shell [/bin/sh]: /bin/bash $

Sisteminizde NIS kullanılıyorsa chsh yerine yppasswd -s komutunu kullanmalısınız.

Kabuk islem'lerinde, Standar Girdi, Cikti ve Hata

Linux'ta, programın ekrana yazılan bilgiyi iki sınıf altında toplayabiliriz. Birincisi, olağandışı bir durumu bildiren standart hata, diğeri de her türlü verinin yazıldığı standart çıktı. Program çalıştığı andan itibaren bu iki kanal üzerinden akan bilgiler, programın çalıştığı sanal terminale yazılırlar. Program girdilerini ise standart girdi aracı olan klavyeden alır.
Eğer bu bilgiler bir ekran boyundan (25 satır) fazla tutuyorsa bazı satırlar programcının gözünden kaçabilir. Bunu önlemek amacıyla standart çıktı ve hata bir dosyaya yazılacak şekilde ayarlanabilir. Yönlendirme olarak da bilinen bu işlem UNIX altında (DOS'ta olduğu gibi) > karakteri ile gerçekleştirilir.
Örnek olarak o an bulunduğunuz dizinde yeralan dosyaları ekrana getirin:
Kod:   Kodu kopyalamak için üzerine çift tıklayın!
$ ls -al

Bu komut, standart çıktı olarak dosyaların bilgilerini ekrana getirecektir. Bu çıktıyı, bir dosyaya yönlendirelim ve dosyanın içeriğine göz atalım:

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
linux:~$ ls -al > liste linux:~$ cat liste total 16 drwxr-xr-x 5 sercan users 1024 Feb 13 13:10 . drwxr-xr-x 4 root root 1024 Jan 7 1980 .. -rw-r--r-- 1 sercan users 390 Feb 13 12:56 .Xdefaults -rw-r--r-- 1 sercan ftpadm 2016 Feb 13 13:09 .bash_history -rw-r--r-- 1 sercan users 1 Feb 13 12:57 .bashrc -rw-r--r-- 1 sercan users 163 Nov 24 1993 .kermrc -rw-r--r-- 1 sercan users 34 Nov 24 1993 .less -rw-r--r-- 1 sercan users 114 Nov 24 1993 .lessrc drwxr-xr-x 2 sercan users 1024 Jan 7 1980 .term -rw-r--r-- 1 sercan users 87 Feb 13 12:56 .xinitrc -rw-r--r-- 1 sercan users 2795 Feb 13 13:06 adres -rw-r--r-- 1 sercan users 0 Feb 13 13:10 liste drwxr-xr-x 2 sercan users 1024 Feb 13 12:54 mail drwxr-xr-x 2 sercan users 1024 Feb 13 12:54 perl -rw-r--r-- 1 sercan users 0 Feb 13 13:10 typescript linux:~$

> karakteri standart hatayı dosyaya yönlendirmez. Bu işlem için 2> kullanılır. Ama hatayı görebilmek için, hata yaratan bir komut yazmalıyız, değil mi?

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
$ ls /deneme /deneme : No such file or directory $ ls /deneme 2> hata $ cat hata /deneme : No such file or directory

Aşağıdaki komutun işletilmesinin ardından standart çıktı oku1 dosyasına, standart hata ise oku2 dosyasına yazılacaktır. Bu dosyaları komutu çalıştırdıktan sonra incelemek suretiyle neler olup bittiğini anlamak mümkün olur.

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
$ mkdir ~/deneme (deneme isimli bir dizin yaratır) $ touch ~/deneme/gecici (gecici isimli bir dosya yaratır) $ cat ~/deneme 2>oku2 >oku1

Kabuk, standart çıktı ve standart girdi için sırayla 2 ve 1 numaralarının kullanımına izin verir. Yukarıda yeralan son komutta, standart hata mesajları için 2 kullanılarak hataların oku2 dosyasına yazılmıştır. Aşağıda, çekirdek derlemek için sürekli kullandığım program yeralıyor. Yönlendirme sayesinde ekrana gelmesi gereken mesajlar kullanılmayan 9. sanal konsola yönlendiriliyor.

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
# make config # make dep > /dev/tty9 # make clean > /dev/tty9 # time make zImage > /dev/tty9

Son satırdaki time komutu, kendinden sonra gelen komutun ne kadar zaman içinde çalıştırıldığını gösterir. Çekirdek derlemede geçen zaman, makinanın gücü hakkında bir fikir verebilir. Peki ne hata, ne de çıktıyı ekranda görmek istemiyorsam ne yapmalıyım ? Bunun için standart çıktı ve hatayı biraraya getirerek yönlendirilen her çıktının kaybolduğu ``kara deliğe'' atmak yeterlidir:

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
$ ls /deneme > /dev/null 2>&1

Yukarıdaki komutun yazılış sırasına dikkat edin.
Standart çıktı ya da standart hatayı yönlendirirken, > işareti kullanırsanız: dosya yoksa, oluşturulur ve komutun çıktısı dosyaya yazılır. Dosya varsa, içeriği yok olur ve komutun çıktısı dosyanın yeni içeriği olur. Var olan bir dosyayının eski içeriğini tamamen silmek değil de komutun çıktısını dosyaya eklemek istiyorsanız >> kullanmalısınız. Bu durumda dosya varsa komutun çıktısı dosyanın eski içeriği korunarak sonuna eklenir, dosya yoksa oluşturulur ve komutun çıktısı dosyaya yazılır. Örneğin:

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
$ echo deneme1 >>deneme.txt $ cat deneme.txt deneme1 $ echo deneme2 >>deneme.txt $ cat deneme.txt deneme1 deneme2 $

Örnekte görüldügü gibi ilk komut deneme.txt dosyasını oluşturdu. İkincisi ise oluşan dosyanın içeriğini koru***** ikinci komutun çıktısını bu dosyanın sonuna ekliyor.
Standart hata ve çıktıya ek olarak UNIX'in desteklediği bir yönlendirme daha vardır: Standart girdi sayesinde bir dosyayı oluşturan satırlar, bir komut veya programa yönlendirilebilir. Daha önce bir metin editor kullanarak hazırlamış olduğumuz raporu patrona kısa yoldan göndermek için,

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
$ mail -s "rapor" patron < rapor.txt

Dosyanın içeriği, mail komutuna girdi olmuş ve rapor.txt dosyası patron kullanıcısına ``rapor'' konu başlığıyla e-posta ile gönderilmiştir.


İyi çalışmalar...
__________________
Geçme namert köprüsünden, alırsa sel alsın seni. Yatma çakal gölgesinde, yerse Aslan yesin seni...!

Konu Silencer tarafından (19 Aralık 2009 Saat 13:12 ) değiştirilmiştir.
  Alıntı ile Cevapla

IRCForumlari.NET Reklamlar
radyo44.com.tr
Cevapla

Etiketler
islemleri, kabuk, linux

Seçenekler
Stil

Yetkileriniz
Konu Acma Yetkiniz Yok
Cevap Yazma Yetkiniz Yok
Eklenti Yükleme Yetkiniz Yok
Mesajınızı Değiştirme Yetkiniz Yok

BB code is Açık
Smileler Açık
[IMG] Kodları Açık
HTML-Kodu Kapalı
Trackbacks are Kapalı
Pingbacks are Açık
Refbacks are Açık


Benzer Konular
Konu Konuyu Başlatan Forum Cevaplar Son Mesaj
Java Class Yapisinda (Miras) Inheritance Ve (Uzatma) Extends Islemleri YazılımMimarı Java 0 02 Mayıs 2012 10:47
Linux [ Kullanici islemleri ] Silencer GNU, Linux ve UNIX 0 18 Aralık 2007 05:17
PHP MySQL Veri Tabanı Islemleri teodelsym PHP 4 27 Nisan 2006 15:03