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ı temizle33[3J: Scroll back buffer’ı temizle33[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:
clearsadece 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
resetkomutuna başvurun - Script’lerde interactive kontrol yaparak
clearkullanı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.