Linux Pipe Kullanımı ve Yönlendirme

Pipe, linux kabuğu üzerinde komutlar ile yapabileceğiniz işlemlerin kuvvetini artırmak ve zaman kazanmak için kullanılan bağlayıcı bir yönlendiricidir. Bir komut üzerinden aldığınız çıktıyı başka bir komutun girdisi olarak yönlendirmenize olanak sağlar. Komut sonucunda ekrana bastırılan çıktıyı aynı anda başka bir komutun işleyebileceği şekilde transfer etmeye yarar.

Pipe Türkçe karşılığı ile boru anlamına gelmektedir. Komut istemcisi üzerinde ( | ) karakteriyle tetiklenir. UNIX temelinde yer almaktadır ve DOS üzerinde de aynı karakter ile çağırılır.

Komut satırında çalıştırılan her program belirli veri akışlarına sahiptir;

  • STDIN (0): Standart giriş, çalıştırılan program için gerekli girdiler.
  • STDOUT (1): Standart çıktı, program tarafından ekrana ve kullanıcıya iletilen veri.
  • STDERR (2): Standart hata, programın oluşturduğu ve yansıtabildiği terminal varsayılan hataları.

Pipe ile birlikte bir program üzerinden aldığınız standart çıktıları başka bir programın standart girdisi olarak kullanabilirsiniz. Benzer işlemlerde kullanılabilecek yeniden yönlendiriciler ise başlıca şunlardır;

  • Büyüktür operatörü (>): Dosya yoksa oluşturulur ve komutun çıktısı dosyaya yazılır. Dosya varsa içerik tamamen sıfırlanır ve komutun çıktısıyla dosya yeniden oluşturulur.
  • İki tane büyüktür (>>): Var olan bir dosya içeriğini tamamen silmeden devamına eklemeler yapmak istiyorsanız bunu kullanmalısınız. Eski içeriği silmez, altına eklemeler yapar.
  • Küçüktür operatörü (<): Çalıştırılan komuta dışarıdan bir dosyanın girdi olarak iletilmesini sağlar. Özellikler otomize edilen çalışmalarda bash kodlarken işinizi kolaylaştıracaktır.

Pipe kullanımı aşağıdaki gibi bir örnekle daha basit bir şekilde ifade edilebilir;

Terminal üzerinde hayali olarak bir programın başka bir komuta içeriğinin iletilmesi.

 

$ rapor | mail

 

Örnekte rapor komutunun vereceği tüm veriler boru kullanımı ile mail komutuna girdi olarak gönderilmiştir.

Standart girdi ve çıktı yönlendirmeleri ise aşağıdaki örnekler ile daha basit şekilde ifade edilebilir;

Terminal üzerinde hayali olarak bir programın başka bir dosyaya içeriğinin yazdırılması.

 

$ kullanicilar -listele > guncel-liste.txt

 

Örnekte kullanicilar komutu listele parametresi ile kullanıcıları guncel-liste.txt adında bir dosyaya kaydetti.

Büyüktür işareti (<) programın döndüğü standart hatayı dosyaya kaydetmez. Bunu zorlamak için 2> şeklinde zorlama işlemi yapılmalıdır. İşaretin öncesindeki sayı, standart girdi ve çıktı tiplerinin aldığı değerlerden gelmektedir.

Tekrar eden işlemleri sürdürülebilir olarak kullanmak için bir dosyaya kaydedebilirsiniz. Tek bir satır üzerinde döngü yazmak yada kontrol sağlamak okunabilirlik için zorlayıcı olabilir. Bunun için ayrı bir dosya içerisinde yapılması gereken işlemleri belirtip sonrasında onu komut satırı üzerinden basit bir şekilde çalıştırabilirsiniz. Oluşturduğunuz dosyanın başına #!/bin/bash yazmanız durumunda programı çalıştırdığınızda komutlar otomatik olarak bash programı olarak algılanacaktır. Başına bu tarz bir belirteç eklemediğiniz dosyaları komut satırı üzerinde çalıştırabilmek için bash dosya.sh şeklinde standart bir tetikleyici kullanabilirsiniz.

İlgili Konular: #Linux

Görüşlerini aşağıdaki form ile paylaşabilirsin;