Linux programlara yapılan girdiyi ve programdan üretilen çıktıyı bir akış olarak ele alır ve verileri işletir. Linux’ta veri akışı için normal olarak girdiler klavyeden gelir ve çıktılar ekrana yazdırılır. Siz bu girdiyi ve çıktıyı farklı kaynaklardan gelecek ve örneğin bir dosya gibi farklı kaynaklara gidecek şekilde yönlendirebilirsiniz. Benzer şekilde, çıktıyı bir programdan başka bir programa nakledebilirsiniz. Bu araç birçok programı birarada kullanmak için harika bir yoldur.
Başlıklar
Unix’ten linux’a miras kalan önemli özelliklerden birisi de, kompleks bir işi yapmanın yolunun bir çok basit işi birleştirmekten geçmesidir.
Akış Tiplerini Keşfetmek
Yönlendirme ve nakletme mantığını kavramak için farklı tiplerdeki giriş ve çıkış akışlarını anlamak gereklidir.
Standart Girdi : Programlar standart input ya da stdin olarak klavye girişini kabul ederler.
Standart Çıktı : Metin tabanlı programlar pek çok veriyi kullanıcılarına standart output ya da stdout yoluyla verirler. Bu da normalde ekranda görüntülemektir.
Standart Hata : Linux ikinci bir tip çıktı akışı olarak Standart Error ya da stderr olarak tanımlanan bir yol sağlar. Bu çıktı akışı hata mesajları gibi önemli bilgiler taşır. Genellikle, standart error standart output ile aynı cihaza çıktı verir. Ama siz bunu daha kullanışlı bir şekilde yönlendirebilirsiniz. Örneğin, standart hata mesajlarını bir dosyaya yazdıracak şekilde yönlendirebilir ve bu esnada standart çıktı ekranında kullanıcıyla etkileşimli programın çalışmaya devam etmesini sağlayabilir, hata mesajlarını daha sonra inceleyebilirsiniz.
Girdi ve Çıktıyı Yönlendirmek
Bu işlem için aşağıda gördüğünüz şekilde yönlendirme sembolünü kullanabilirsiniz
$ echo $NNTPSERVER > nntpserver.txt
Bu komut NNTPSERVER çevre değişkenini nntpserver.txt metin dosyasına yazdırır.
Temel Yönlendirme Operatörleri
Yönlendirme Operatörü | Açıklaması |
> | Standart çıktıyı içeren bir dosya oluşturur. Eğer belirtilen dosya mevcutsa üzerine yazar. |
>> | Standart çıktıyı varolan bir dosyaya ekler. Eğer belirtilen dosya yok ise yenisini oluşturur. |
2> | Standart hatayı içeren bir dosya oluşturur. Eğer belirtilen dosya mevcutsa üzerine yazar. |
2>> | Standart hatayı varolan bir dosyaya ekler. Eğer belirtilen dosya yok ise yenisini oluşturur. |
&> | Aynı anda hem standart çıktıyı hemde standart hatayı içeren bir dosya oluşturur. Eğer belirtilen dosya mevcutsa üzerine yazar. < Belirtilen dosyanın içeriğini standart girdi tarafından kullanılacak şekilde aktarır. |
<< | Takip eden satırdaki metni standart girdi olarak kullanılacak şekilde aktarır. |
<> | Belirtilen dosyayı hem standart girdi hem de standart çıktı kullanacak şekilde aktarır. |
İpucu ; Çok bilinen bir yöntem standart çıktı ya da standart hatayı /dev/null aygıtına yönlendirmektir. Bu dosya hiçbir donanım bağı olmayan bir aygıttır ve gereksiz verilerden kurtulmak istediğinizde kullanırsınız. Örneğin, whine programı çok fazla hata mesajı üretiyor ama yine de kullanmak istiyorsanız whine 2> /dev/null yazarak programı çalıştırabilir ve hata mesajlarını göz ardı edebilirsiniz.
Detay gerektiren bir yönlendirme operatörü de “<<”dür. Bu operatör “dokümanın burası” anlamında kullanılır ve standart girdi olarak takip eden satırdan metin alır.Bu operatörü, bir komuta veri geçmek için bir script parçası olarak kullanabilirsiniz. Diğer pek çok operatörden farklı olarak bu operatör girdinin sonunu işaretlemek için kullanılır. Örneğin, someprog << EOF komutu someprog programının yalnızca EOF içeren satırı görene kadarki metni işlemesi için kullanılır.
Son yönlendirme aracı “tee” komutudur. Bu komut standart çıktıyı belirttiğiniz bir dosyaya ve aynı anda ekrana yazdıracak şekilde ikiye ayırır. Örneğin ; someprog | tee yaz.txt komutu someprog çıktısını hem ekrana hem de yaz.txt dosyasına yazdırır. Genellikle tee komutu verdiğiniz dosya mevcutsa üzerine yazar, eğer mevcut dosyaya ekleme yapmasını istiyorsanız -a seçeneği ile birlikte kullanmalısınız.
Programlar Arasında Verileri Nakletmek
Programlar sık sık diğer programların ürettiği çıktıları kullanırlar. Bunu yapmak için yönlendirme operatörleri yardımıyla, ilk programın standart çıktısını bir dosyaya yönlendirip, sonra ikinci programın standart girdisini bu dosyadan okuyacak şekilde yönlendirebilirsiniz. Ancak bu hantal ve gereksiz dosya üretimi sağlayacak bir yoldur. Bunun yerine daha pratik olan nakletme yöntemini kullanabilirsiniz. Bir programdan diğerine veri nakletme aracı dik çizgi simgesiyle gösterilir ve $ birinci | ikinci | üçüncü şeklinde kullanılır.
Örneğin, ilk programın sistem çalışma süresi, CPU kullanımı, giriş yapan kullanıcılar gibi bazı sistem istatistiklerini verdiğini düşünelim. Bu oldukça uzun bir liste olabilir. Ancak siz sadece belirli bir bilgiyle ilgileniyorsunuz. Bunun için ikinci program grep gibi sadece ilgilendiğiniz veriyi arayıp süzen bir komut ya da bir script olabilir.
Bağlantıda Kalalım