Linux komut satırı, kullanıcıya sistem üzerinde tam kontrol sağlayan güçlü bir araçtır, ancak gerçek faydası boru (pipe) ve yönlendirmeyi doğru kullanmayı anlamaktan gelir. Bu iki özellik, komutları birbirine bağlamaya ve çıktıları yüksek esneklikle iletmeye olanak tanır.

Boru (pipe) fonksiyonu, bir komutun çıktısını doğrudan işleme için başka bir komuta yönlendirmenizi sağlar; yönlendirme komutları ise sonuçları dosyalara kaydetmenize veya hataların ve çıktıların nasıl görüntüleneceğini değiştirmenize olanak tanır. Bu teknikler, sistem yönetimi, yazılım geliştirme veya hatta gelişmiş günlük kullanım alanlarında çalışan herkes için önemlidir.
Bu kılavuzda, Linux'ta Boru (Pipe) ve Yönlendirme (Redirection) kavramlarını, daha verimli komutlar yazmanıza ve karmaşık görevleri tek bir satırda gerçekleştirmenize yardımcı olacak net ve pratik örneklerle açıklıyoruz.
özet
- Linux komutları, giriş, çıkış ve hata mesajları için standart Pipe sistemini kullanır.
- Bu yönerge, çıktı akışını bir terminal penceresi yerine bir dosyaya gönderir.
- Akışlar, komutları birbirine bağlamanıza olanak tanır; böylece birinin çıktısı diğerinin girdisi olur.
- Linux'ta akışlar ve yönlendirme, komut çıktılarını verimli bir şekilde kullanmanıza olanak tanır. Bunları dosyalara kaydedebilir veya diğer komutlar için girdi olarak kullanabilirsiniz. İşte bilmeniz gerekenler.
Boru nedir?
Linux, diğer Unix benzeri işletim sistemleri gibi, akış kavramını içerir. Her işlem, stdin adı verilen bir giriş akışına, stdout adı verilen bir çıkış akışına ve stderr adı verilen bir hata akışına sahiptir. Linux'ta, gerçek dünyada olduğu gibi, akışların iki uç noktası vardır: bir kaynak (giriş) ve bir hedef (çıkış).
Giriş akışı, klavyeden komuta gelebilir ve bu sayede işleme bilgi veya komut gibi metinler gönderebilirsiniz. Çıkış akışı, genellikle terminal penceresine olmak üzere komuttan gelir. Standart hata akışı (stderr) da terminal penceresine yazar.
Akışları yeniden yönlendirebilir ve akışlar üzerinden yönlendirebilirsiniz. Yeniden yönlendirme, çıktıyı terminal penceresi dışındaki bir konuma göndermek anlamına gelir. Akışlar üzerinden yönlendirme ise bir komutun çıktısını alıp başka bir komutun girdisi olarak kullanmak anlamına gelir.
Bu sayede, basit bir komut dizisinden karmaşık çözümler oluşturmak için komutları birbirine bağlayabilir ve bunların uyum içinde çalışmasını sağlayabilirsiniz.
Akışların yeniden yönlendirilmesi
Yönlendirmenin en basit biçimi, bir komutun çıktısını alıp bir dosyaya göndermektir. Bu basit durum bile faydalı olabilir. Belki komut çıktısının bir kaydına ihtiyacınız var veya belki de okuyamayacağınız kadar büyük miktarda çıktı gönderiliyor.
Bu test bilgisayarında, `du` komutu 1380 satır metin çıktısı veriyor. Bu verileri bir dosyaya göndereceğiz.
du > disk-usage.txt
ls /home/dave-mckay/ -R >> disk-usage.txt
wc disk-usage.txt
wc disk-usage.txt missing-file.txt > results.txt
wc: missing-file.txt: No such file or directory
cat results.txt

Disk-usage.txt dosyasının sonuçları results.txt dosyasına, eksik dosya.txt dosyasının hata mesajı ise terminal penceresine gönderilir.
Yönlendirdiğimiz yolu belirtmek için sağ açılı parantezlere sayısal göstergeler ekleyebiliriz. Yol 1, standart çıktı (stdout) ve yol 2, standart hata (stderr)'dir. Standart çıktıyı bir dosyaya, standart hata çıktısını ise başka bir dosyaya kolayca yönlendirebiliriz.
wc disk-usage.txt missing-file.txt 1> results.txt 2> error.txt
cat results.txt
cat error.txt
wc disk-usage.txt missing-file.txt 1> results.txt 2>&1
cat results.txt

Tüm hata mesajları kaydedilir ve standart sistem çıktısının (stdout) gönderildiği aynı dosyaya gönderilir.
Çıktının hiçbirini saklamak istemeyebilirsiniz; sadece terminal penceresine herhangi bir şey yazmaktan kaçınmak isteyebilirsiniz. Gönderilen her şeyi uyarı vermeden tüketen boş aygıt dosyası, istenmeyen ekran çıktısını göndermek için uygun bir hedeftir.
rm disk-usage.txt missing-file.txt 1> /dev/null 2>&1

Sildiğimiz dosyalardan biri mevcut olmamasına rağmen, terminal penceresine ne standart çıktı (stdout) ne de standart hata (stderr) mesajları yazılmıyor.
Yönlendirme ile kullanabileceğiniz bir diğer yöntem ise dosyayı komutun standart giriş akışına (stdin) okumaktır.
wc < /etc/passwd
wc < /etc/passwd > results.txt
cat results.txt
Çıktıları yönlendirmek Pipe
Geri dönmek Pipe Bir komutun çıktısını başka bir komutun girdisine yönlendirmek. Akış yönlendirme, komut satırının en güçlü özelliklerinden biridir ve temel Linux komutlarını ve araçlarını kullanma şeklinizi değiştirebilir.
Bir komutun çıktısını başka bir komuta yönlendirmek için boru işareti "|" sembolünü kullanırız. Örneğin, ana dizininizdeki tüm dosyaları ve alt klasörleri tekrar tekrar görüntülemek istiyorsanız, terminal penceresinde `ls` komutunun çıktısının hızlı bir önizlemesini göreceksiniz.
`ls` komutunun çıktısını `less` komutuna yönlendirerek, sonuçları kullanımı kolay bir dosya görüntüleyicide görüntüleyebiliriz.
ls -R ~ | less

Bu yöntem, çıktıyı bir dosyaya göndermeyi ve ardından dosyayı açmayı içeren iki aşamalı manuel işlemden daha verimlidir ve daha az zaman alır.
Çıktıları başka bir komut aracılığıyla yönlendirme
Yönlendirme işleminin faydası, ikinci komutun birinci komutun çıktısını işlemesiyle açıkça ortaya çıkar.
Bilgisayarınızdaki gerçek ve sahte kullanıcı hesaplarının sayısını sayalım. `/etc/passwd` dosyasının içeriğini görüntülemek için `cat` komutunu kullanacağız ve ardından `wc` komutunu bu dosya üzerinden geçireceğiz. `-l(satır sayısı)` seçeneği, bu dosyadaki satır sayısını sayacaktır. Her hesap için bir satır olduğundan, hesapları otomatik olarak sayar.
cat /etc/passwd | wc -l
cat /etc/passwd | awk -F: '{print $1}'
cat /etc/passwd | awk -F: '{print $1}' | sort

Çıktıları bir dizi komut aracılığıyla yönlendirmek
İşte üçüne bağlı dört komuttan oluşan bir küme. Pipe `ps` komutu çalışan işlemleri listeler. `-e` (tüm) seçeneği tüm işlemleri gösterirken, `-o` (çıktı) seçeneği görüntülenecek bilgileri belirtir. `comm` sembolü ise yalnızca işlem adını görmek istediğimizi gösterir.
İşlem adlarının listesi daha sonra grep komutuna iletilir ve bu komut, adında "chrome" kelimesini içeren işlemleri filtreler. Filtrelenmiş bu liste daha sonra sıralama için sort komutuna iletilir. Sıralanmış liste daha sonra uniq komutuna iletilir. -c (sayım) seçeneği, benzersiz işlem adlarının sayısını sayar. Gösterim amacıyla, aynı işlemi Firefox tarayıcısıyla tekrarlayacağız.
ps -e -o comm | grep chrome | sort | uniq -c
ps -e -o comm | grep firefox | sort | uniq -c
Sayısız kombinasyon
Linux'ta boru (pipe) ve yönlendirme (redirection) mekanizmalarına hakim olmak, sistem yönetiminde yeni bir kontrol ve verimlilik seviyesinin kilidini açar. Görünüşte basit olan bu araçlar size çok zaman ve emek tasarrufu sağlayabilir.
Örnekleri cihazınızda pratik olarak uygulamayı deneyin ve karmaşık görevleri nasıl özlü ve profesyonel komutlarla gerçekleştirebileceğinizi fark edeceksiniz.




