Terminal ekranına yüzlerce satır log döküldüğünde, büyük bir konfigürasyon dosyasını incelemeniz gerektiğinde ya da bir komutun çıktısı ekranı aşağı doğru fırlatıp geçtiğinde, less komutunu bilmek ile bilmemek arasındaki fark bir sysadmin’in verimliliğini doğrudan etkiler. cat ile açtığınız 50.000 satırlık bir access log dosyası terminalinizi felç ederken, less ile aynı dosyayı saniyeler içinde gezebilir, arayabilir ve analiz edebilirsiniz. Bu yazıda less komutunu tüm detaylarıyla ele alacağız.
less Nedir ve Neden cat’ten Üstündür?
less, büyük metin dosyalarını sayfalayarak okumanızı sağlayan bir terminal pager programıdır. İsminin hikayesi biraz esprilidır: more komutundan türetilmiş, “less is more” (daha az daha fazladır) felsefesindan yola çıkılarak isimlendirilmiştir. Fakat gerçekte less, more‘dan çok daha yeteneklidir.
cat komutu dosyanın tüm içeriğini bir anda terminale basar ve siz sadece en sona bakabilirsiniz. Büyük dosyalarda bu hem yavaştır hem de işe yaramaz. less ise dosyayı bellekte tutmadan, parça parça okur. 10 GB’lık bir log dosyasını less ile açsanız bile sistem belleğiniz şişmez çünkü less sadece o an ekranda gösterilen kısmı işler.
more komutu ise yalnızca ileri doğru gezinmenize izin verir, geri gidemezsiniz. less ile hem ileri hem geri gidebilir, arama yapabilir, birden fazla dosyayı yönetebilirsiniz.
Temel Kullanım
En basit haliyle bir dosyayı less ile açmak şu şekilde yapılır:
less /var/log/syslog
ya da bir komutun çıktısını pipe ile aktarabilirsiniz:
dmesg | less
Dosyayı açtıktan sonra fareyle scroll yapabilir ya da klavye kısayollarını kullanabilirsiniz. less‘ten çıkmak için q tuşuna basmanız yeterlidir.
Klavye Kısayolları: less’in Gerçek Gücü
less komutunu öğrenmek aslında büyük ölçüde klavye kısayollarını öğrenmek demektir. Bu kısayolları ezberlemek zorunda değilsiniz, zamanla kullandıkça aklınızda kalacaklar.
Gezinme Kısayolları
- Space veya f: Bir sayfa ileri git
- b: Bir sayfa geri git
- d: Yarım sayfa ileri git
- u: Yarım sayfa geri git
- j veya Aşağı Ok: Bir satır aşağı git
- k veya Yukarı Ok: Bir satır yukarı git
- g veya <: Dosyanın en başına git
- G veya >: Dosyanın en sonuna git
- 10g: 10. satıra git (herhangi bir satır numarasıyla kullanılabilir)
- 50%: Dosyanın %50’sine git
Arama Kısayolları
- /kelime: Dosyada ileriye doğru “kelime” ara
- ?kelime: Dosyada geriye doğru “kelime” ara
- n: Bir sonraki eşleşmeye git
- N: Bir önceki eşleşmeye git
- &kelime: Sadece eşleşen satırları göster (çok kullanışlı!)
Diğer Önemli Kısayollar
- q: less’ten çık
- h: Yardım ekranını aç
- v: Dosyayı varsayılan editörde aç (genellikle vi)
- =: Mevcut dosya konumu hakkında bilgi göster
- m + harf: Dosyada bir yer işareti (mark) koy
- ‘ + harf: Koyduğun yer işaretine git
- F: Dosyayı takip et (tail -f benzeri)
Sık Kullanılan Parametreler
less komutunu çalıştırırken çeşitli parametreler kullanarak davranışını özelleştirebilirsiniz.
- -N: Satır numaralarını göster
- -i: Aramada büyük/küçük harf duyarsız olsun
- -I: Arama tamamen büyük/küçük harf duyarsız (hem desen hem de metin için)
- -S: Uzun satırları wrap etme, yatay scroll ile göster
- -F: Dosya bir ekrana sığıyorsa hemen çık, yoksa sayfalama yap
- -X: Ekranı temizleme, less çıktıktan sonra içerik terminalde kalsın
- -e: Dosyanın sonuna ulaşıldığında otomatik çık
- -m: more benzeri yüzde göstergesi göster
- -M: Daha detaylı konum bilgisi göster (satır numarası ve yüzde)
- -p desen: Dosyayı açtığında direkt olarak o deseni ara ve ilk eşleşmeye git
- -n: Satır numarası takibini devre dışı bırak (büyük dosyalarda hız kazandırır)
- +F: Dosyayı açar açmaz takip moduna geç
- -R: ANSI renk kodlarını yorumla ve renkli göster
Gerçek Dünya Senaryoları
Senaryo 1: Log Dosyası Analizi
Bir prodüksiyon sunucusunda uygulama aniden çökmeye başladı. /var/log/nginx/error.log dosyasına bakmak istiyorsunuz ama dosya 2 GB büyüklüğünde. Şu komutla hem satır numaralarını görerek hem de doğrudan hata aramaya başlayabilirsiniz:
less -N -i /var/log/nginx/error.log
Dosya açıldıktan sonra /error yazarak hata satırlarına atlayabilirsiniz. n tuşuyla sonraki hataya geçmek yalnızca saniyeler alır. Eğer sadece “502” hataları görmek istiyorsanız &502 yazarak sadece o satırları filtreleyin.
Senaryo 2: Gerçek Zamanlı Log Takibi
tail -f nin yetersiz kaldığı durumlarda, hem gerçek zamanlı takip yapmak hem de geriye doğru arama yapabilmek istersiniz. less +F tam da bunun için biçilmiş kaftandır:
less +F /var/log/auth.log
Bu komut dosyayı açar ve tail -f gibi en alta giderek yeni satırları takip etmeye başlar. Ctrl+C ile takip modundan çıkıp normal gezinme moduna geçebilirsiniz. İstediğinizi bulduktan sonra tekrar F tuşuna basarak takip moduna dönebilirsiniz. Bu özellik tail -f‘e kıyasla çok büyük bir avantajdır.
Senaryo 3: Birden Fazla Dosyayı Yönetmek
Birkaç farklı log dosyasını aynı anda incelemeniz gerekiyorsa:
less /var/log/syslog /var/log/kern.log /var/log/auth.log
Dosyalar arasında geçiş yapmak için:
- :n: Sonraki dosyaya geç
- :p: Önceki dosyaya geç
- :d: Mevcut dosyayı listeden kaldır
Bu yöntem, birden fazla terminal penceresi açmaktan çok daha pratiktir.
Senaryo 4: Pipe ile Kullanım
Komut çıktılarını incelemek için less ile pipe kullanımı günlük iş akışınızın vazgeçilmez parçası olacak:
# Çalışan tüm processleri sayfalayarak incele
ps aux | less
# Disk kullanımını sırala ve incele
du -sh /var/* | sort -rh | less
# Paket listesini incele
dpkg -l | less
# Find çıktısını incele
find /etc -name "*.conf" | less
Senaryo 5: Renkli Çıktıları Korumak
Bazı komutlar renkli çıktı üretir ama pipe’a verince renkleri kaybedersiniz. -R parametresi ANSI renk kodlarını yorumlayarak renklerin korunmasını sağlar:
grep --color=always "ERROR" /var/log/app.log | less -R
ya da ls çıktısını renkli görmek için:
ls --color=always -la /etc | less -R
Senaryo 6: Büyük Konfigürasyon Dosyalarını İnceleme
Kubernetes ya da Docker Compose konfigürasyonları bazen çok uzun olabilir. Satır numaralarıyla birlikte ve uzun satırları wrap etmeden incelemek için:
less -NS /etc/kubernetes/manifests/kube-apiserver.yaml
-S parametresi sayesinde uzun satırlar kesilmez, sağa kaydırma yapabilirsiniz. Bu özellikle JSON veya YAML gibi yapılandırma dosyalarında satır hizalamasını korur.
Senaryo 7: Belirli Bir Satır veya Desenle Dosyayı Açma
Bir dosyayı açar açmaz belirli bir konuma atlamak isteyebilirsiniz:
# Dosyayı açıp direkt "CRITICAL" kelimesini ara
less -p "CRITICAL" /var/log/app.log
# Dosyayı 500. satırdan aç
less +500 /var/log/syslog
# Dosyayı en sondan aç
less +G /var/log/syslog
LESS Ortam Değişkeni ile Kalıcı Ayarlar
Her seferinde parametreleri yazmak yorucu olabilir. LESS ortam değişkeni ile varsayılan parametrelerinizi kalıcı hale getirebilirsiniz. .bashrc veya .bash_profile dosyanıza şunu ekleyin:
export LESS="-MiRS"
Bu ayarla less her açılışta:
- Detaylı konum bilgisi gösterecek (
-M) - Büyük/küçük harf duyarsız arama yapacak (
-i) - ANSI renklerini yorumlayacak (
-R) - Uzun satırları wrap etmeyecek (
-S)
Değişikliği hemen uygulamak için:
source ~/.bashrc
Artık sadece less /var/log/syslog yazmanız yeterli, diğer ayarlar otomatik gelecek.
lesspipe ile Binary Dosyaları Okumak
less normalde metin dosyaları için tasarlanmıştır. Ancak lesspipe preprocessor’u kurulu ise sıkıştırılmış dosyaları, arşivleri ve bazı binary dosyaları da doğrudan açabilirsiniz:
# lesspipe'ı etkinleştir (.bashrc'ye ekle)
eval "$(lesspipe)"
Bu ayardan sonra şu tip komutlar çalışır:
# Gzip sıkıştırılmış log dosyasını direkt aç
less /var/log/syslog.1.gz
# Zip arşivinin içeriğini görüntüle
less arsiv.zip
# Deb paketinin içeriğini incele
less paket.deb
Logrotate ile döndürülmüş ve gzip ile sıkıştırılmış log dosyalarını bu yöntemle açmanız oldukça zaman kazandırır. Aksi takdirde zcat veya gunzip ile önce açmanız gerekirdi.
less ile Git Log Çıktısını İnceleme
Git, varsayılan olarak uzun çıktıları less ile gösterir. Ama bunu kendiniz de kurgulamak isteyebilirsiniz:
git log --oneline --graph --all | less -R
ya da git config ile kalıcı hale getirmek için:
git config --global core.pager "less -R"
Karmaşık Bir Senaryonun Tam Walkthrough’u
Bir prodüksiyon ortamında uygulama 500 hatası vermeye başladı diyelim. İşte step by step nasıl ilerleneceği:
# 1. Nginx access log'unu aç ve 500'leri bul
less -iNR /var/log/nginx/access.log
# less içinde: sadece 500 içeren satırları göster
# &500 yazıp Enter'a bas
# 2. O zaman dilimine gitmek için timestamp ara
# /2024:14:35 yazıp Enter'a bas
# 3. Yer işareti koy
# m tuşuna bas, ardından a harfine bas (mark a)
# 4. Başka bir log dosyasına bak
:e /var/log/app/application.log
# 5. İlgili hata zamanını ara
/NullPointerException
# 6. İlk log dosyasına geri dön
:p
# 7. Koyduğun yer işaretine git
' tuşuna bas, ardından a harfine bas
Bu workflow, birden fazla terminal penceresi açmak yerine tek bir less session’ı içinde tüm analizi yapmanızı sağlar.
less vs Alternatifler
less harika bir araç ama bazı durumlarda alternatifleri daha iyi bir seçim olabilir.
- bat: Söz dizimi renklendirmesi olan,
catvelesskarışımı modern bir alternatif.apt install batile kurulabilir. Kod dosyalarını incelemek için çok daha kullanışlıdır. - most: Birden fazla pencere destekler ve farklı renk seçenekleri sunar.
- vim: Gerçekten büyük dosyaları hem incelemek hem düzenlemek istiyorsanız,
vim -R dosya.txtile read-only modda açabilirsiniz.
Ancak less, herhangi bir ek kurulum gerektirmeden neredeyse tüm Linux/Unix sistemlerde mevcut olması sayesinde hala standart araç olma özelliğini korumaktadır. Bir sunucuya SSH’ladığınızda bat olmayabilir ama less mutlaka vardır.
İpuçları ve Kısa Notlar
Zamanla işinizi kolaylaştıracak bazı küçük detaylar:
lessiçindeyken v tuşuna basarsanız dosyayı$EDITORdeğişkeninde tanımlı editörle açar. EğerEDITOR=nanotanımlıysa nano açılır. Bir şeyi hem inceleyip hem düzenlemek istediğinizde çok kullanışlıdır.mankomutunun çıktısı zatenlessile gösterilir. Yani man sayfalarında da tümlesskısayolları çalışır./ile man sayfasında arama yapabilirsiniz.- Çok büyük dosyalarda satır numarası gösterimi (
-N) performansı yavaşlatabilir. Bu durumda sadece ihtiyaç duyduğunuzdalessiçinden-Nkomutunu çalıştırabilirsiniz: eksi işareti ile-Nyazın ve Enter’a basın. lessiçinde-tuşuna basıp ardından bir parametre harfi yazarsanız, o parametreyi çalışma anında toggle edebilirsiniz. Örneğin-Nyazıp Enter’a basmak satır numaralarını açar/kapatır.
Sonuç
less, sysadmin araç kutusunun en temel ve en değerli araçlarından biridir. Büyük log dosyaları, konfigürasyon dosyaları, komut çıktıları; bunların hepsini verimli bir şekilde incelemek için less‘i iyi bilmek gerekir. Özellikle +F ile canlı log takibi, & ile satır filtreleme ve birden fazla dosyayı aynı anda yönetme özellikleri, onu basit bir sayfalama aracının çok ötesine taşır.
Klavye kısayollarını ezberlemek zorunda değilsiniz; ama / ile arama, G ile sona gitme ve q ile çıkma üçlüsünü aklınızda tutmanız bile başlangıç için yeterlidir. Geri kalanlar günlük kullanımda kendiliğinden yerine oturur. LESS ortam değişkenini .bashrc‘nize ekleyerek kendinize uygun varsayılan ayarlar tanımlayın ve less‘i her gün biraz daha derinlemesine keşfedin; zaman içinde terminalde geçirdiğiniz sürenin ne kadar verimli hale geldiğini fark edeceksiniz.