clear Komutu: Terminal Ekranını Temizleme ve Kısayollar

Terminal penceresine bakıyorsunuz, ekran komut çıktılarıyla dolup taşmış, neyin ne olduğunu anlamak için yukarı aşağı kaydırıyorsunuz. Tanıdık bir his, değil mi? İşte bu noktada en basit ama en çok kullanılan komutlardan biri devreye giriyor: clear. Günde onlarca kez kullandığınız bu küçük komut aslında düşündüğünüzden çok daha fazla özellik barındırıyor. Bu yazıda clear komutunu, alternatiflerini, kısayollarını ve gerçek dünya senaryolarındaki kullanımını detaylıca ele alacağız.

clear Komutu Nedir ve Ne Yapar?

clear komutu, terminal ekranını temizlemek için kullanılan temel bir Linux/Unix aracıdır. Adı üstünde, ekranı “temizler” yani mevcut terminal oturumundaki görünür çıktıyı ortadan kaldırır. Ancak burada önemli bir nokta var: clear komutu terminal geçmişini silmez, sadece ekranı yukarı kaydırarak yeni bir boş ekran görünümü oluşturur. Yani kaydırma çubuğunu kullanarak yukarı çıktığınızda eski komut çıktılarını hala görebilirsiniz.

Bu komut ncurses kütüphanesiyle birlikte gelir ve /usr/bin/clear konumunda bulunur. Terminal türünü otomatik olarak algılayarak doğru escape kodlarını üretir.

which clear
# Çıktı: /usr/bin/clear

file /usr/bin/clear
# Çıktı: /usr/bin/clear: ELF 64-bit LSB pie executable, x86-64...

Temel Kullanım

En basit haliyle clear komutunu çalıştırmak yeterlidir:

clear

Bu kadar. Tek kelime, tek komut. Ama işin içine girince daha fazlası olduğunu göreceksiniz.

clear Komutunun Parametreleri

clear komutu birkaç parametre destekler:

  • -x: Ekranı temizler ama imleci en üste taşımaz, terminal geçmişinde yukarı kaydırma yapıldığında içerik görünmeye devam eder
  • -T [terminal]: Belirli bir terminal tipi için temizleme yapar, TERM ortam değişkenini geçici olarak değiştirir
  • -V: Kullanılan ncurses versiyonunu gösterir
  • –help: Yardım bilgisini gösterir
# Versiyon bilgisini görmek için
clear -V

# Belirli bir terminal tipi için
clear -T xterm-256color

Gerçek hayatta -x parametresini pek kullanmazsınız, ama otomasyon scriptlerinde bazen terminal tipi belirtmek gerekebilir.

Klavye Kısayolları: Asıl Güç Burada

clear komutunu yazmak yerine klavye kısayolları kullanmak hem daha hızlı hem de daha pratiktir. Sysadmin olarak günde yüzlerce komut çalıştırıyorsanız, bu kısayollar size ciddi zaman kazandırır.

Ctrl+L: En Önemli Kısayol

Ctrl+L, clear komutunun tam işlevsel karşılığıdır ve neredeyse evrensel olarak çalışır:

  • Bash, Zsh, Fish shell’de çalışır
  • Birçok terminal uygulamasında (GNOME Terminal, iTerm2, Alacritty) desteklenir
  • Şu an yazmakta olduğunuz komutu silmez, sadece ekranı temizler

Bu son nokta çok önemli. Diyelim ki uzun bir komut yazıyorsunuz ve ekran doldu, clear yazarsanız mevcut yarım komutunuz gider. Ama Ctrl+L basarsanız hem ekran temizlenir hem de yazdığınız komut en alta gelir.

# Örnek senaryo: Uzun bir find komutu yazarken ekran doldu
find /var/log -name "*.log" -mtime -7 -exec grep -l "ERROR" {} ;
# Ctrl+L'e bastınız, ekran temizlendi ama komutunuz hala orada

Ctrl+C ve Ctrl+L Farkı

Bazı yeni sysadminler bu ikisini karıştırır:

  • Ctrl+C: Çalışan bir komutu durdurur, yeni satıra geçer ama ekranı temizlemez
  • Ctrl+L: Ekranı temizler, çalışan komutu durdurmaz

reset Komutu: Daha Güçlü Temizlik

reset komutu cleardan farklı olarak terminal durumunu tamamen sıfırlar. Terminale garbage karakterler geldiğinde, yanlış bir binary dosyayı cat ile açtığınızda veya terminal kilitlendığinde reset hayat kurtarır.

reset

reset komutu şunları yapar:

  • Terminal ayarlarını varsayılana döndürür
  • Ekranı temizler
  • Terminal geçmişini de temizler (clear’dan farklı olarak)
  • Biraz daha yavaş çalışır çünkü daha fazla iş yapar

Gerçek dünya senaryosu: Bir log dosyasını analiz ederken yanlışlıkla binary bir dosyayı cat ile açtınız ve terminal bozuldu. Karakterler anlamsız görünüyor, komutlar düzgün çalışmıyor. İşte bu anda reset yazın (görmeyebilirsiniz ama yazın ve Enter’a basın), terminal kurtarılır.

tput clear: Programatik Yaklaşım

tput clear komutu, terminal kontrol kodlarını doğrudan kullanır ve script yazarken daha güvenilir bir yöntemdir:

tput clear

clear ile tput clear arasındaki fark nedir? Teknik olarak clear komutu zaten tput clear işlevini yerine getirir, ama bazı durumlarda tput daha esnek olabilir çünkü belirli terminal özelliklerini doğrudan kontrol edebilirsiniz.

Scroll Back Buffer’ı Gerçekten Temizlemek

Daha önce belirttiğimiz gibi, clear komutu terminal scroll back buffer’ını silmez. Eğer gerçekten her şeyi temizlemek istiyorsanız farklı yöntemlere ihtiyacınız var.

Bash’te Tam Temizlik

# Ekranı temizle ve scroll buffer'ı da sil
printf '33[2J33[3J33[H'

Bu escape kodlarının anlamı:

  • 33[2J: Görünür ekranı temizle
  • 33[3J: Scroll back buffer’ı temizle
  • 33[H: İmleci sol üst köşeye taşı

GNOME Terminal’de Tam Temizlik

GNOME Terminal kullanıyorsanız Edit menüsünden “Clear Scrollback” seçeneğini kullanabilir ya da şu komutu çalıştırabilirsiniz:

# GNOME Terminal için scroll buffer dahil tam temizlik
clear && printf 'e[3J'

Alias ile Kendi clear’ınızı Oluşturun

Gerçek anlamda temizlik yapan bir alias tanımlamak çok pratik bir çözümdür:

# ~/.bashrc veya ~/.zshrc dosyasına ekleyin
alias cls='clear && printf "e[3J"'
alias c='clear'

Bu alias’ları ekledikten sonra:

source ~/.bashrc
# Artık 'cls' komutu hem ekranı hem scroll buffer'ı temizler

Script’lerde clear Kullanımı

Etkileşimli script’ler yazarken clear komutu kullanıcı deneyimini ciddi ölçüde iyileştirir. İşte bazı pratik örnekler:

Basit Menü Script’i

#!/bin/bash

show_menu() {
    clear
    echo "========================================="
    echo "     Sunucu Yönetim Paneli v1.0"
    echo "========================================="
    echo ""
    echo "1. Disk kullanımını göster"
    echo "2. Bellek kullanımını göster"
    echo "3. Aktif servisleri listele"
    echo "4. Son 20 log satırını göster"
    echo "5. Çıkış"
    echo ""
    echo -n "Seçiminizi yapın [1-5]: "
}

while true; do
    show_menu
    read -r secim
    
    case $secim in
        1)
            clear
            df -h
            echo ""
            echo "Devam etmek için Enter'a basın..."
            read -r
            ;;
        2)
            clear
            free -h
            echo ""
            echo "Devam etmek için Enter'a basın..."
            read -r
            ;;
        5)
            clear
            echo "Çıkılıyor..."
            exit 0
            ;;
        *)
            echo "Geçersiz seçim!"
            sleep 1
            ;;
    esac
done

Bu tür script’lerde clear olmadan çalışsaydı, her menü seçiminden sonra ekran kalabalıklaşırdı ve kullanıcı deneyimi berbat olurdu.

Yükleme/İlerleme Göstergesi

#!/bin/bash

show_progress() {
    local current=$1
    local total=$2
    local task=$3
    
    clear
    echo "İşlem devam ediyor..."
    echo ""
    echo "Görev: $task"
    echo "İlerleme: $current / $total"
    
    # Basit progress bar
    local percent=$((current * 100 / total))
    local filled=$((percent / 2))
    local empty=$((50 - filled))
    
    printf "["
    printf '%0.s#' $(seq 1 $filled)
    printf '%0.s-' $(seq 1 $empty)
    printf "] %d%%n" $percent
}

# Örnek kullanım
items=("Paketler güncelleniyor" "Konfigürasyon yazılıyor" "Servisler yeniden başlatılıyor" "Doğrulama yapılıyor" "Tamamlandı")
total=${#items[@]}

for i in "${!items[@]}"; do
    show_progress $((i + 1)) $total "${items[$i]}"
    sleep 2
done

echo ""
echo "Tüm işlemler başarıyla tamamlandı!"

Zsh ve Fish Shell’de clear Kullanımı

Farklı shell’lerde clear komutu aynı şekilde çalışır, ama bazı ince farklar var.

Zsh’de Özel Kısayollar

Zsh kullanıyorsanız .zshrc dosyasına şunları ekleyebilirsiniz:

# Ctrl+L davranışını özelleştir
bindkey -s "^L" "clearn"

# Veya scroll buffer'ı da temizleyen versiyon
clear-screen-and-scrollback() {
    echoti clear
    printf '%b' 'e[3J'
    zle .reset-prompt
    zle -R
}
zle -N clear-screen-and-scrollback
bindkey '^L' clear-screen-and-scrollback

Fish Shell’de

Fish shell’de clear ve Ctrl+L standart olarak çalışır. Özelleştirmek için:

# ~/.config/fish/functions/cls.fish
function cls
    clear
    printf 'e[3J'
end

Gerçek Dünya Senaryoları

Senaryo 1: Production Sunucusunda Log Takibi

Bir production sunucusunda hata ayıklama yapıyorsunuz. Birden fazla log dosyasını kontrol etmeniz gerekiyor:

# İlk log dosyasını kontrol et
tail -100 /var/log/nginx/error.log

# Ekran doldu, temizle
clear

# MySQL loglarına bak
tail -50 /var/log/mysql/error.log

# Tekrar temizle
clear

# Sistem loglarına bak
journalctl -u nginx --since "1 hour ago" --no-pager

Bu akışta clear kullanmadan çalışmak, kafanızı karıştıracak miktarda bilgi birikimi yaratır.

Senaryo 2: Cron Job ile Otomatik Rapor Script’i

#!/bin/bash
# /usr/local/bin/daily-check.sh

generate_report() {
    clear
    echo "============================================"
    echo "  Günlük Sistem Raporu - $(date '+%Y-%m-%d %H:%M')"
    echo "============================================"
    echo ""
    
    echo "## DISK KULLANIMI ##"
    df -h | grep -v tmpfs
    echo ""
    
    echo "## BELLEK DURUMU ##"
    free -h
    echo ""
    
    echo "## YÜKSEK CPU KULLANAN PROSESLER ##"
    ps aux --sort=-%cpu | head -6
    echo ""
    
    echo "## SON 5 FAILED LOGIN ##"
    grep "Failed password" /var/log/auth.log | tail -5
    echo ""
    
    echo "## SERVİS DURUMU ##"
    systemctl status nginx mysql php-fpm --no-pager -l | grep -E "(Active|●)"
}

generate_report

Senaryo 3: Watchdog Script’i

Sunucuyu periyodik olarak izleyen ve ekranı sürekli güncel tutan bir script:

#!/bin/bash
# Sunucu durumunu 5 saniyede bir güncelle

INTERVAL=5

while true; do
    clear
    echo "Sunucu Monitörü | $(date '+%H:%M:%S') | Yenileme: ${INTERVAL}s"
    echo "-----------------------------------------------------------"
    echo ""
    
    echo "CPU Yükü:"
    uptime | awk -F'load average:' '{print $2}'
    echo ""
    
    echo "Bellek:"
    free -h | grep Mem
    echo ""
    
    echo "Disk I/O:"
    iostat -x 1 1 2>/dev/null | grep -v "^$" | tail -5
    echo ""
    
    echo "Aktif Bağlantılar:"
    ss -s | grep "TCP:"
    
    sleep $INTERVAL
done

Bu script clear kullanmadan çalışsaydı, terminal sürekli yeni çıktılar ekleyeceği için tamamen kullanılmaz hale gelirdi.

Terminal Emülatörlerine Özgü Davranışlar

Farklı terminal emülatörlerinde clear komutu biraz farklı davranabilir:

  • GNOME Terminal: clear sadece görünür alanı temizler, Ctrl+L ile aynı davranışı sergiler
  • Alacritty: GPU hızlandırmalı olduğu için clear çok hızlı çalışır
  • tmux/screen: Bu multiplexer’lar içinde clear çalışır ama pane geçmişini etkilemez
  • SSH bağlantıları: Uzak sunucuda clear çalıştırdığınızda remote terminal temizlenir, yerel terminal değil

tmux’ta Pane Geçmişini Temizlemek

# tmux içindeyken pane geçmişini de temizlemek için
clear && tmux clear-history

# Veya tmux komutu olarak
# Ctrl+b ardından : (iki nokta) basıp
# clear-history yazın

Alias ve Fonksiyon Koleksiyonu

Pratik bir sysadmin olarak .bashrc veya .zshrc dosyanıza ekleyebileceğiniz faydalı kısayollar:

# Temel temizlik alias'ları
alias c='clear'
alias cls='clear && printf "e[3J"'

# Temizleyip dizin içeriğini göster
alias cl='clear && ls -la'

# Temizleyip sistem durumunu göster
alias ct='clear && uptime && echo "" && free -h && echo "" && df -h | grep -v tmpfs'

# Log izleme - temizleyip başla
taillog() {
    clear
    if [ -z "$1" ]; then
        echo "Kullanım: taillog <dosya_yolu>"
        return 1
    fi
    echo "İzleniyor: $1"
    echo "Çıkmak için Ctrl+C"
    echo "---"
    tail -f "$1"
}

clear ile İlgili Sık Yapılan Hatalar

Hata 1: clear ile reset’i karıştırmak

reset komutu terminal emülatörünüzü yavaşlatabilir çünkü terminal ayarlarını baştan yükler. Sadece ekranı temizlemek için reset kullanmayın, clear veya Ctrl+L yeterlidir.

Hata 2: Script’te koşulsuz clear kullanmak

Eğer script’iniz non-interactive bir ortamda çalışıyorsa (cron, systemd service) clear komutu gereksiz escape karakterleri üretebilir. Bu durumda:

# Script'in interactive olup olmadığını kontrol et
if [ -t 1 ]; then
    clear
fi

Hata 3: Pipe içinde clear kullanmak

clear komutunu pipe içinde kullanmak mantıklı değildir ve beklenmedik davranışlara yol açar. clear her zaman terminal için kullanılmalıdır.

TERM Ortam Değişkeni ve clear

clear komutu, TERM ortam değişkenine bakarak hangi terminal için temizleme kodu üreteceğine karar verir:

# Mevcut terminal tipini gör
echo $TERM

# Çıktı örneği: xterm-256color

# TERM değişkeni ayarlanmamışsa clear hata verir
# Bu durumda şunu deneyin:
export TERM=xterm
clear

SSH ile bağlandığınız bazı minimal sistemlerde TERM değişkeni ayarlanmamış olabilir ve clear çalışmaz. Bu durumda export TERM=xterm yazarak sorunu çözebilirsiniz.

Sonuç

clear komutu ilk bakışta son derece basit görünüyor, zaten öyle. Ama doğru kullanıldığında terminal deneyiminizi önemli ölçüde iyileştiriyor. Ctrl+L kısayolunu alışkanlık haline getirmek, scroll buffer temizleme tekniklerini bilmek ve script’lerde clear‘ı akıllıca kullanmak, günlük sistem yönetimi işlerinizi daha verimli hale getirir.

Özetle hatırlamanız gerekenler:

  • Günlük kullanım için Ctrl+L en hızlı ve pratik yöntemdir
  • Gerçek temizlik için clear && printf 'e[3J' kullanın veya bir alias oluşturun
  • Terminal bozulduğunda reset komutuna başvurun
  • Script’lerde interactive kontrol yaparak clear kullanın
  • tmux/screen içindeyken pane geçmişi ayrıca temizlenmesi gerektiğini unutmayın

En basit komutlar bile doğru kullanılınca fark yaratır. Terminal temiz, zihin berrak.

Yorum yapın