Modül dersleri (2/2)
Boru hatları ve filtreler (grep ve |)
Linux komut satırının en güçlü özelliklerinden biri, farklı komutları bağlayarak birinin çıktısının bir sonrakinin girdisi olabilmesidir. Bu teknik boru hatları kullanılarak gerçekleştirilir ve genellikle grep metin filtreleme komutuyla eşleştirilir.
Filtreleme Metni: grep
grep (Global Normal İfade Yazdırma) komutu, bir veya daha fazla dosya içinde belirli bir metin dizesini arar ve eşleşen satırları yazdırır:
grep "string" [file_name]grep için Faydalı Seçenekler
grep -i "error" server.log: büyük/küçük harfe duyarlı olmayan bir arama gerçekleştirir (büyük harf ve küçük harf arasındaki farkı yok sayarak "Hata", "hata" veya "HATA"yı bulur).grep -n "connection" server.log: Eşleşen satırla birlikte satır numarasını görüntüler.grep -v "INFO" server.log: Aramayı tersine çevirir ve yalnızca belirtilen anahtar kelimeyi içermeyen satırları görüntüler.
Komutların Zincirlenmesi: Boru Hattı |
Boru hattı operatörü | dikey çubuğuyla temsil edilir. Soldaki komutun standart çıktısını doğrudan sağdaki komutun standart girişine gönderir:
[command1] | [command2]Örneğin, bir günlük dosyası çok büyükse ve tüm dosyayı yazdırmadan belirli bir kelimeyi aramak istiyorsanız, cat ve grep'yi birleştirebilirsiniz:
cat logs/server.log | grep ERRORBu, server.log dosyasının tamamını cat ile okur, ancak ekrana yazdırmak yerine akışı yalnızca "ERROR" kelimesini içeren satırları filtreleyen ve görüntüleyen grep'ye yönlendirir.
Kullanım Örnekleri ve Yaygın Hatalar
Yalnızca büyük harf içeren bir dosyada (örneğin "POST") küçük harfli bir kelime ararsanız (örneğin "post"), grep hiçbir şey döndürmez:
grep "post" logs/access.log
# Output: (no results, search is case-sensitive by default)Büyük/küçük harfe bakılmaksızın satırı bulmak için -i bayrağını kullanın:
grep -i "post" logs/access.log
# Output:
# 127.0.0.1 - - [22/May/2026:10:10:00 +0000] "POST /login HTTP/1.1" 401 234Belirtilen dosya mevcut değilse, grep bir hata döndürecektir:
grep "ERROR" nonexistent_file.log
# Output:
# grep: nonexistent_file.log: No such file or directoryKendin dene
Alıştırma 1: Günlük dosyalarındaki hataları arayın
'logs/server.log' dosyasını yalnızca 'ERROR' sözcüğünü (büyük/küçük harfe duyarlı) içeren satırları ayıklamak ve görüntülemek için filtreleyin.
İpucu göster
Grep komutunu ve ardından aranacak sözcüğü ve dosya yolunu kullanın.
3 denemeden sonra çözüm mevcut
Alıştırma 2: Boru hatları ve filtreler
'logs/server.log' dosyasını okumak için cat komutunu kullanın ve yalnızca 'WARNING' sözcüğünü içeren satırları filtrelemek ve yazdırmak için çıktısını grep komutuna aktarın (|).
İpucu göster
'|' kanalını kullanarak cat logs/server.log'u grep WARNING'e bağlayın karakter.
3 denemeden sonra çözüm mevcut
Alıştırma 3: Büyük/küçük harfe duyarlı olmayan arama
Uygun grep bayrağını kullanarak 'logs/access.log' dosyasında 'post' kelimesini (büyük veya küçük harf) içeren tüm satırları arayın.
İpucu göster
Büyük/küçük harf duyarlılığını göz ardı etmek için grep'i -i seçeneğiyle birlikte kullanın.
3 denemeden sonra çözüm mevcut