Standart I/O ve Pipes

Ubuntu Türkiye Wiki sitesinden
Gezinti kısmına atla Arama kısmına atla

Standart I/O ve Borulama (pipes)

"Standart Giris" ve "Standart Cikis", LINUX işletim sisteminin çok önemli iki kavramıdır.

Linux uçbirim (konsol) komutlarının yüzde doksanı, işlevlerini standart giriş biriminden okuyacakları veriler üzerinde yerine getirip,varsa sonuclarını standart çıkış birimine gönderir.Bir baska deyişle,Linuxkonsol komutlarının yüzde doksanı,görevlerini klavyeden okuyacakları veriler üzerinde yerine getirip,varsa sonuclarını ekrana gönderir.

Standart giris birimine Linux terminolojisinde "STDIN",standart cikis birimini de "STDOUT" denir.

Standart Giris ve Cıkış

Linux, programlara 3 giris ve cikis kanali saglamaktadir.

Giriş Tanım
1- Standart giris (STDIN) - varsayılan klavye
2- Standart cikis (STDOUT) - varsayılan terminal penceresi (monitor)
3- Standart hata (STDERR) - varsayılan terminal penceresi (monitor)

Çıkışı Bir Dosyaya Yönlendirme

STDOUT ve STDERR dosyalara yeniden yonlendirilebilir.


$ command operator filename

Desteklenen operatörler

Seçenek Açıklama
> STDOUT u dosyaya yönlendirir.
2> STDERR u dosyaya yönlendirir.
&> Tüm çıkışı dosyaya yönlendirir.

Aşağıdaki komutu root olmadan calıştırırsanız çıkış ve hatalar verecektir.


$ find /etc -name passwd

Operatorler, çıkışı ve hatları saklamak icin kullanılabilirler.


$ find /etc -name passwd > dosya.txt

Yukarıdaki komutu verdiğinizde; etc klasöru içersindeki ismi passwd olan dosya,dosya.txt adı altında home klasörünüzde saklanacaktır.İçeriğinde ise komutun verdiği hatalar (errors) değilde sadece çıktılar (output) olacaktir.Hatalar komutu verdiğinizde ekranınızda gözükecek ama dosyaya kayıt edilmeyecektir. " > "


$ find /etc -name passwd 2> dosya.txt

Yukarıdaki komutu verdiğinizde; etc klasorü içersindeki ismi passwd olan dosya,dosya.txt adi altinda home klasorunde saklancaktır.Dosya içeriğinde ise sadece komutun verdigi hatalar olacaktir. " 2> "


$ find /etc -name passwd &> dosya.txt

Yukarıdaki komutu verdiğinizde; hata ve cikislar beraber saklanacaktir. " &> "

Not1:Bazi durumlarda,standart ciktinin yonlendirilecegi dosyada bulunan eski kayitlari bozmadan yenilerini arkasina eklemek isteyebilirsiniz.Bu durumda yonlendirmeyi " >> " ile yapmaniz yeterli olacaktir.

Standart Ciktiyi Bir Programa Yonlendirme (Piping)

Pipe kavrami ile " | " komutlari baglayabilirsiniz.


$ command1 



$ ls -l /etc 



$ (cal 2010;cal 2011) 


Birden Fazla Adrese Yonledirme (tee)

Bazi durumlarda bir programin ciktisini iki degisik yere yonlendirmeye gereksinim duyabilirsiniz.


$ command1 




$ sort adresler 

komutu "adresler" dosyasını sıiralayarak sıralı halini tee programina yönlendirecek; tee programi standart girdisinden gelen verileri hem adresler.sıralı dosyasına hem de kendi standart ciktisina yonlendirecek;son olarak da "less" komutu bu satirlari sayfa sayfa listeleyecektir.

Dosyadan Standart Girise Yonlendirme


$ tr 'A-Z' 'a-z' < .bash_profile

komutu ".bash_profile" dosyasındaki büyük harfle başlayan karakterleri,küçük harflere dönüstürecektir.

Ayni isi asagidaki komut ile de yapabilirsiniz.


$ cat .bash_profile 

Kaynak

Kim Korkar Linux'tan 05.pdf RH033 - Red Hat Linux Essentials.pdf