00 Üç aracın doğru kullanımı
"cat dosya.txt | grep 'something'" antipatterndir. grep 'something' dosya.txt yazın — cat gereksiz.
Useless Use of Cat (UUOC) yaygın bir antipattern:
cat dosya | grep 'X' → grep 'X' dosya
cat dosya | sort → sort dosya
cat dosya | wc -l → wc -l dosya
cat yalnızca birden fazla dosyayı birleştirirken veya here-doc alternatifi olarak anlamlıdır.
01 cat: temel birleştirme ve görüntüleme
cat (concatenate) birden fazla dosyayı birleştirir ve stdout'a yazar. Tek dosya için de görüntüleme aracı olarak kullanılır.
# Dosya içeriğini göster
cat dosya.txt
# Birden fazla dosyayı birleştir (cat'in asıl amacı)
cat kisim1.txt kisim2.txt kisim3.txt > tamami.txt
# Dosyayı oluştur (küçük içerikler için)
cat > yeni.txt <<'EOF'
Birinci satır
İkinci satır
EOF
# Dosyaya ekle
cat >> mevcut.txt <<'EOF'
Eklenen satır
EOF
# Stdin'den oku (Ctrl+D ile sonlandır)
cat > not.txt
# Birden fazla dosyayı pipe'la işleme
cat access.log.1 access.log | grep 'ERROR' # eski ve yeni logu birlikte ara
02 cat: satır numarası ve görünmez karakterler
Hata ayıklama sırasında satır numaraları ve görünmez karakterlerin gösterilmesi faydalıdır.
# Satır numaraları göster
cat -n dosya.txt
1 Birinci satır
2 İkinci satır
3 Üçüncü satır
# Sadece boş olmayan satırları numaralandır
cat -b dosya.txt
# Satır sonunu göster ($ ile, Windows CRLF tespiti)
cat -A dosya.txt # -v -E -T hepsini birlikte
Satır sonu Unix$
Windows satır^M$
# Tab karakterlerini ^I olarak göster
cat -T Makefile # Makefile tab gerektiren yerleri
# Görünmez karakterleri göster (^ ve M- notation)
cat -v binary.txt
# Ardışık boş satırları tekile indir
cat -s dosya.txt
^I olarak göstercat -A dosya.txt çıktısında satır sonunda $ yerine ^M$ görüyorsanız dosya Windows formatında (CRLF). Düzeltmek için: tr -d '\r' < dosya.txt > temiz.txt
03 tac: ters sıra
tac (cat'in tersi), dosyanın son satırını önce gösterir. Log dosyalarında en son olayı hızlıca görmek için kullanışlıdır.
# Dosyayı ters sırayla yazdır
tac dosya.txt
# Log'un son girişlerini önce göster, filtrele
tac /var/log/syslog | grep -m 5 'ERROR' # son 5 hata
# Belirli ayırıcıyla ters sıra (satır değil, blok bazında)
tac -s '---' bolumler.txt # --- ayırıcısına göre ters çevir
# sort -r ile fark: tac satır sırasını tersler,
# sort -r ise içeriği sıralar (farklı amaçlar)
tac dosya.txt # orijinal sırayı ters çevir
sort -r dosya.txt # alfabetik ters sırala
# head + tac: son satırdan başlayarak ilk N'i bul
tac app.log | grep 'DEPLOY' | head -3 # son 3 deploy
04 less: sayfalama ve navigasyon
less büyük dosyaları belleğe tamamen almadan sayfalayarak gösterir. İnteraktif navigasyon ve arama ile tam bir dosya tarayıcısıdır.
# Dosyayı aç
less buyuk_dosya.log
# Pipe çıktısını say (man sayfaları gibi)
man grep | less
git log --oneline | less
# Son satırda başla (log dosyaları için)
less +G /var/log/syslog
# Belirli satırdan başla
less +100 dosya.txt # 100. satırdan
# Arama ile başla
less +/ERROR app.log # ilk ERROR'dan başla
# Satır numaralarını göster
less -N dosya.txt
| Tuş | İşlev | Tuş | İşlev |
|---|---|---|---|
Space / f | Bir sayfa ileri | b | Bir sayfa geri |
j / ↓ | Bir satır aşağı | k / ↑ | Bir satır yukarı |
g / < | Dosya başı | G / > | Dosya sonu |
/desen | İleri ara | ?desen | Geri ara |
n | Sonraki eşleşme | N | Önceki eşleşme |
q | Çık | F | Canlı takip (tail -f gibi) |
m | İşaret koy | ' | İşarete git |
v | $EDITOR'da aç | h | Yardım |
less içindeyken F'ye basarak tail -f gibi canlı takip moduna geçebilirsiniz. Durdurmak için Ctrl+C, sonra normal navigasyona dönmek için herhangi bir tuş.
05 less: arama, işaretleme ve çoklu dosya
less'in güçlü özelliklerine çoğu kullanıcı hiç ulaşmaz: çoklu dosya, işaret koyma, pipe'tan okuma.
# Çoklu dosya aç
less dosya1.log dosya2.log dosya3.log
# :n → sonraki dosya, :p → önceki dosya, :d → kapat
# Arama (less içinde)
# /ERROR → ileri arama
# ?WARN → geri arama
# n / N → sonraki/önceki eşleşme
# Grep ile kombine: sadece eşleşenleri say
less app.log
# &ERROR → sadece ERROR içeren satırları göster (filtre modu)
# & → filtreyi kaldır
# İşaret koyma
# ma → 'a' etiketiyle işaret koy
# 'a → 'a' işaretine git
# '' → son konuma dön
# Satır numarasına git
# 100g → 100. satıra
# 50% → dosyanın %50'sine
less içindeyken &ERROR yazarsanız sadece "ERROR" içeren satırlar gösterilir — diğerleri gizlenir. & yazıp Enter'a basarak filtreyi kaldırırsınız. Büyük log dosyalarında grep | less'ten daha hızlıdır.
06 less: yararlı seçenekler
Komut satırı seçenekleri ve LESS ortam değişkeni ile less'i özelleştirmek.
# Satır numaraları göster
less -N dosya.txt
# Uzun satırları kes (kaydırma yok)
less -S genis_dosya.txt # ← → ile kaydır
# Renk çıktısını koru (ANSI escape)
less -R renkli_cikti.txt
# Kullanım: git log, grep renkleriyle
git log --color | less -R
grep --color=always 'ERROR' app.log | less -R
# Çıkışta ekranı temizleme (varsayılan: içerik kalır)
less -X dosya.txt
# Satır sayısı az ise otomatik çık
less -F dosya.txt # tek sayfaya sığıyorsa az gibi davran
# LESS ortam değişkeniyle varsayılan seçenekler
export LESS='-R -F -X' # ~/.bashrc'ye ekle
# Binary dosya göster (uyarıyı atla)
less -f binary.bin
07 Pratik vakalar
Günlük kullanımda en çok karşılaşılan dosya görüntüleme senaryoları.
# grep renkleriyle ERROR ve WARN vurgula, less'te gez
grep --color=always -E 'ERROR|WARN|INFO' app.log | less -R
# Eski ve yeni log'u birleştir (cat'in asıl amacı)
cat /var/log/nginx/access.log.1 /var/log/nginx/access.log \
| grep 'POST /api/' \
| less
# Yorumları ve boş satırları atlayarak göster
grep -v -E '^#|^$' /etc/ssh/sshd_config | less
# Tüm config dosyalarını birleştir
cat /etc/nginx/conf.d/*.conf | less -N
# JSON Lines dosyasını güzel formatla ve gez
cat events.jsonl | jq '.' | less -R
# Ya da her satırı tek obje olarak formatla
while IFS= read -r line; do
echo "$line" | jq '.'
echo '---'
done < events.jsonl | less
# ~/.bashrc veya ~/.bash_profile'a ekle
export LESS='-R -F -X -i'
# -R: renk koru, -F: kısa dosyayı otomatik çık
# -X: çıkışta temizleme, -i: büyük/küçük harf duyarsız arama
# less'i varsayılan pager yap
export PAGER='less'
export MANPAGER='less -X'
Hatırlanacaklar
cat dosya | araçantipattern —araç dosyayazcat'in asıl amacı: birden fazla dosyayı birleştirmekcat -A: Windows satır sonu (^M$) ve tab (^I) görünürtac: log'un son girişini önce görmek içinless +G: dosyanın sonunda başla;less +/PATTERN: aramayla başlalessiçindeF:tail -fgibi canlı takip;Ctrl+Cile çıklessiçinde&PATTERN: sadece eşleşen satırları göster (filtre modu)LESS='-R -F -X'~ ~/.bashrc'ye ekle
Devam: head, tail — ilk/son satırlar ve canlı takip · stat, file — dosya bilgisi ve tür tespiti