Klavye Kısayolları ile Terminal Verimliliğini Artırma

Terminal açtığında fare ile menülere tıklamak, komutları yavaş yavaş yazmak ya da yukarı ok tuşuna defalarca basmak… Bu alışkanlıklar seni yavaşlatıyor ve farkında bile değilsin. Günde birkaç saat terminal kullanan bir sistem yöneticisi olarak, klavye kısayollarını öğrenmek ilk haftada belki 20-30 dakikalık bir zaman yatırımı gerektirir ama karşılığında günlük iş akışını ciddi ölçüde hızlandırır. Bu yazıda Bash ve terminal emülatörlerinde kullanabileceğin, gerçekten işe yarayan kısayolları ve teknikleri ele alacağız.

Readline Kütüphanesi ve Bash Kısayollarının Temeli

Bash’in klavye kısayolları rastgele tasarlanmış değil. Altta yatan GNU Readline kütüphanesi, Emacs ve Vi editörlerinden ilham alan iki farklı mod sunar. Varsayılan olarak Emacs modu aktiftir. Yani Emacs kullanmasan bile, onun kısayol mantığını terminal üzerinden zaten kullanıyorsun demektir.

Hangi modda olduğunu kontrol etmek ve gerekirse değiştirmek için:

# Mevcut modu kontrol et
bind -v | grep keymap

# Vi moduna geç (sadece mevcut oturum)
set -o vi

# Emacs moduna geri dön
set -o emacs

# Kalıcı yapmak için .bashrc veya .inputrc dosyasına ekle
echo "set editing-mode emacs" >> ~/.inputrc

Çoğu sysadmin Emacs modunda çalışır ve bu yazıdaki örnekler de o moda göre hazırlandı. Vi modunu tercih ediyorsan mantık aynı ama tuş kombinasyonları farklı olacak.

İmleç Hareketi Kısayolları

Uzun bir komut yazarken hatayı fark ettiğinde, Home tuşuna ya da defalarca sol ok tuşuna basmak yerine şu kısayolları kullan:

  • Ctrl+A: İmleci satır başına taşır (Home tuşu ile aynı işlev)
  • Ctrl+E: İmleci satır sonuna taşır (End tuşu ile aynı işlev)
  • Ctrl+F: İmleci bir karakter ileri taşır
  • Ctrl+B: İmleci bir karakter geri taşır
  • Alt+F: İmleci bir kelime ileri taşır
  • Alt+B: İmleci bir kelime geri taşır
  • Ctrl+XX: İmleç ile satır başı arasında gidip gel

Gerçek dünya senaryosu: Şöyle bir komut yazdın:

sudo systemctl restart nginx.servic

Sonda .servic yerine .service yazman gerekiyor. Ok tuşu yerine Ctrl+E ile hızlıca sona git ve düzelt. Ya da başa dönmen gerekiyorsa Ctrl+A kullan. Basit ama günde onlarca kez bu kazancı topluyorsun.

Metin Silme ve Düzenleme Kısayolları

Bir komutun ortasında büyük bir bölümü silmen gerektiğinde, Backspace tuşuna basmaya devam etmek yerine:

  • Ctrl+K: İmleçten satır sonuna kadar olan her şeyi sil (kesme tamponu)
  • Ctrl+U: İmleçten satır başına kadar olan her şeyi sil
  • Ctrl+W: İmleçten geriye doğru bir kelimeyi sil
  • Alt+D: İmleçten ileriye doğru bir kelimeyi sil
  • Ctrl+H: Bir önceki karakteri sil (Backspace ile aynı)
  • Ctrl+D: İmleç altındaki karakteri sil (Delete tuşu ile aynı)
  • Ctrl+Y: Kesme tamponundaki metni yapıştır (yank)

Bu kısayollar arasında özellikle Ctrl+W ve Ctrl+Y kombinasyonu çok güçlüdür. Bir kelimeyi kesip başka bir yere yapıştırmak için:

# Örnek: Bu komutu düşün
rsync -avz /var/log/nginx/ [email protected]:/backup/logs/

# "[email protected]" kısmını değiştirmek istiyorsun
# Alt+B ile kelimeye git, Ctrl+W ile kes, yeni adresi yaz

Komut Geçmişi ile Verimli Çalışmak

Bash geçmişi sadece yukarı-aşağı ok tuşlarından ibaret değil. Gerçek güç, arama ve tekrar kullanım özelliklerinde saklı.

Ters Arama ile Anlık Komut Bulma

# Ctrl+R ile ters arama başlatılır
# Ctrl+R'a basınca prompt değişir: (reverse-i-search)`':
# Aramak istediğin terimi yazmaya başla

# Örneğin "docker" yazarsan son docker komutunu bulur
# Ctrl+R'a tekrar basarsan bir önceki eşleşmeye gider
# Enter ile çalıştır, sağ ok ile düzenlemeye geç

Ctrl+R muhtemelen bu listede öğrenmen gereken en değerli kısayol. Bir hafta boyunca bilinçli olarak kullanırsan, artık yukarı ok tuşuna basmak saçma gelmeye başlar.

Geçmiş Komutları Hızlı Tekrar Kullanma

  • !!: Bir önceki komutu çalıştır
  • !$: Bir önceki komutun son argümanını kullan
  • !^: Bir önceki komutun ilk argümanını kullan
  • !komut: “komut” ile başlayan en son komutu çalıştır
  • !komut:p: Çalıştırmadan sadece ekrana yazdır
  • Ctrl+P: Geçmişte bir önceki komuta git (yukarı ok ile aynı)
  • Ctrl+N: Geçmişte bir sonraki komuta git (aşağı ok ile aynı)

Pratik bir senaryo düşün: Uzun bir find komutu çalıştırdın, sonucu incelemek istiyorsun:

find /var/log -name "*.log" -mtime +30 -size +10M

# Şimdi aynı dosyaları silmek istiyorsun
# Komutu tekrar yazmak yerine:
find /var/log -name "*.log" -mtime +30 -size +10M -delete

# Ya da !$ kullanarak son argümanı farklı amaçla:
ls -lh !$
# Bu, "ls -lh /var/log" anlamına gelir

Geçmiş Ayarlarını Optimize Etme

# .bashrc dosyasına eklenecek ayarlar
export HISTSIZE=10000          # Bellekte tutulacak komut sayısı
export HISTFILESIZE=20000      # Dosyada saklanacak komut sayısı
export HISTCONTROL=ignoredups:erasedups  # Tekrar eden komutları atla
export HISTTIMEFORMAT="%d/%m/%y %T "    # Geçmişe zaman damgası ekle

# Geçmişi anında kaydet (birden fazla terminal için)
shopt -s histappend
export PROMPT_COMMAND="history -a; history -c; history -r; $PROMPT_COMMAND"

Bu ayarlarla geçmiş kaybı yaşamazsın ve aylarca önceki komutları bile bulabilirsin.

Süreç Yönetimi Kısayolları

Terminal üzerinde çalışırken süreçleri kontrol etmek için fare gerekmez.

  • Ctrl+C: Çalışan süreci durdur (SIGINT gönder)
  • Ctrl+Z: Çalışan süreci dondur ve arka plana al (SIGTSTP)
  • Ctrl+D: EOF gönder, genellikle terminali kapatır veya komuttan çıkar
  • Ctrl+S: Terminal çıktısını dondur (XOFF)
  • Ctrl+Q: Donmuş terminali serbest bırak (XON)
  • Ctrl+L: Terminali temizle (clear komutu ile aynı)

Ctrl+Z ve fg/bg kombinasyonu özellikle güçlüdür:

# Uzun süren bir işlemi arka plana al
top
# Ctrl+Z ile dondur

# Arka planda çalıştır
bg

# Tekrar öne al
fg

# Birden fazla iş varsa numarasıyla çağır
fg %2

# Tüm arka plan işlerini listele
jobs

Tab Tamamlama ile Zaman Kazanma

Tab tuşunu sadece dosya isimlerini tamamlamak için kullanıyorsan, büyük bir potansiyeli kaçırıyorsun demektir.

# Komut tamamlama
sys[TAB]         # systemctl, sysctl gibi seçenekleri listeler

# Değişken tamamlama
echo $HOM[TAB]   # $HOME olarak tamamlar

# Hostname tamamlama (ssh için)
ssh user@web[TAB]  # known_hosts'tan tamamlar

# Bash completion paketini kur (daha zengin tamamlama için)
sudo apt install bash-completion   # Debian/Ubuntu
sudo yum install bash-completion   # RHEL/CentOS

# .bashrc içinde aktif et
source /etc/bash_completion

Özellikle systemctl, git, docker gibi araçlar için bash-completion paketi kuruluysa, alt komutları da tamamlayabilirsin:

systemctl [TAB][TAB]    # start, stop, restart, status gibi seçenekleri gösterir
docker [TAB][TAB]       # run, ps, images gibi alt komutları listeler

Terminal Emülatörü Kısayolları

Bash kısayollarının ötesinde, terminal emülatörün de kendi kısayollarını sunar. Gnome Terminal, Tilix, Alacritty gibi araçlar için temel kısayollar şunlardır:

  • Ctrl+Shift+T: Yeni sekme aç
  • Ctrl+Shift+N: Yeni pencere aç
  • Ctrl+Shift+W: Mevcut sekmeyi kapat
  • Ctrl+Page Up / Page Down: Sekmeler arasında geç
  • Ctrl+Shift+C: Terminalde seçili metni kopyala
  • Ctrl+Shift+V: Terminale yapıştır
  • Ctrl+Plus / Ctrl+Minus: Yazı boyutunu ayarla
  • Ctrl+Shift+F: Terminal içinde metin ara

Tmux kullanıyorsan kısayol dünyası daha da genişler:

# Tmux kısayolları (varsayılan prefix: Ctrl+B)
# Ctrl+B ardından:
# c    : Yeni pencere oluştur
# n    : Sonraki pencereye geç
# p    : Önceki pencereye geç
# %    : Dikey bölme
# "    : Yatay bölme
# d    : Oturumu arka plana al (detach)
# [    : Kopyalama moduna gir

# Tmux prefix tuşunu Ctrl+A olarak değiştirmek (screen geleneği)
echo 'set -g prefix C-a' >> ~/.tmux.conf
echo 'unbind C-b' >> ~/.tmux.conf
echo 'bind C-a send-prefix' >> ~/.tmux.conf

Komut Satırı Düzenleme İpuçları

Uzun veya karmaşık komutları doğrudan terminalde yazmak yerine editörde açmak büyük kolaylık sağlar.

# Mevcut komutu varsayılan editörde aç (Ctrl+X ardından Ctrl+E)
# Önce editörü ayarla
export EDITOR=vim   # ya da nano, code gibi

# Uzun bir komut yazarken Ctrl+X, Ctrl+E ile editörde aç
# Düzenle, kaydet ve çık; terminal komutu çalıştırır

Bu özellikle karmaşık sed, awk ya da çok satırlı find komutları yazarken hayat kurtarır.

Brace Expansion ile Hız

Tekrar eden komutları yazmak yerine brace expansion kullan:

# Birden fazla dizin oluştur
mkdir -p /var/www/{site1,site2,site3}/{html,logs,conf}

# Dosya yedekle
cp /etc/nginx/nginx.conf{,.bak}
# Bu şu anlama gelir: cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak

# Birden fazla uzantıyla çalış
ls *.{jpg,png,gif}

# Hızlı karşılaştırma
diff <(ssh server1 cat /etc/hosts) <(ssh server2 cat /etc/hosts)

Alias ve Fonksiyonlarla Kısayol Oluşturma

Sık kullandığın uzun komutları alias’a dönüştürmek, en etkili verimlilik yöntemlerinden biridir.

# .bashrc veya .bash_aliases dosyasına ekle

# Temel alias örnekleri
alias ll='ls -lahF --color=auto'
alias la='ls -lA'
alias ..='cd ..'
alias ...='cd ../..'
alias grep='grep --color=auto'
alias df='df -h'
alias du='du -h'
alias free='free -h'

# Sistem yönetimi alias'ları
alias ports='ss -tulanp'
alias meminfo='free -h && cat /proc/meminfo | grep -i mem'
alias cpuinfo='lscpu | grep -E "^(CPU(s)|Model name|CPU MHz)"'
alias logs='sudo journalctl -f'
alias nginxtest='sudo nginx -t'
alias nginxreload='sudo systemctl reload nginx'

# Güvenlik önlemi olan alias'lar
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'

# Alias'ları yükle
source ~/.bashrc

Daha karmaşık işlemler için alias yerine fonksiyon kullan:

# .bashrc içine ekle

# Dizine git ve içeriğini listele
function cd() {
    builtin cd "$@" && ls -lahF
}

# Hızlı yedek alma
function backup() {
    cp "$1" "$1.bak.$(date +%Y%m%d_%H%M%S)"
    echo "Yedek alındı: $1.bak.$(date +%Y%m%d_%H%M%S)"
}

# Sunucu log takibi
function watchlog() {
    tail -f /var/log/"$1"/*.log 2>/dev/null || journalctl -u "$1" -f
}

# Kullanım: backup /etc/nginx/nginx.conf
# Kullanım: watchlog nginx

Fzf ile Geçmiş Aramasını Bir Üst Seviyeye Taşımak

fzf (fuzzy finder), terminal verimliliğini dramatik biçimde artıran bir araç. Kurulumu ve temel kullanımı:

# Kurulum
sudo apt install fzf          # Debian/Ubuntu
sudo dnf install fzf          # Fedora
# Ya da git üzerinden
git clone --depth 1 https://github.com/junegunn/fzf.git ~/.fzf
~/.fzf/install

# .bashrc içine ekle (fzf entegrasyonu için)
[ -f ~/.fzf.bash ] && source ~/.fzf.bash

# Temel kullanım
# Ctrl+R artık fzf ile çok daha güçlü geçmiş araması yapar
# Ctrl+T ile mevcut dizinden dosya arar
# Alt+C ile dizinlere fuzzy geçiş yapar

# fzf ile komut örnekleri
# Çalışan process seç ve kill et
kill -9 $(ps aux | fzf | awk '{print $2}')

# SSH ile bağlanacak host seç
ssh $(cat ~/.ssh/config | grep "^Host" | awk '{print $2}' | fzf)

Pratik Senaryo: Acil Müdahale Sırasında Kısayollar

Gece 2’de bir sunucuda sorun çıktı ve hızlıca hareket etmen gerekiyor. Bu senaryoda kısayolların değeri daha net ortaya çıkıyor:

# 1. Son çalışan servisler neydi? Ctrl+R ile "systemctl" ara
# systemctl list-units --state=failed

# 2. Log dosyasını takip et, bir hata gördüğünde Ctrl+C ile dur

# 3. Hatalı satırı grep ile bul, !$ ile son argümanı tekrar kullan
grep "ERROR" /var/log/app/application.log | tail -50
grep "CRITICAL" !$

# 4. Servis yapılandırmasını düzenle
sudo vim /etc/nginx/sites-available/default
# Değişiklik yaptıktan sonra Ctrl+Z ile vim'i arka plana al
# Test et:
sudo nginx -t
# Sorun yoksa fg ile vim'e dön, yoksa düzeltmeye devam et

# 5. Birden fazla sunucuda aynı komutu çalıştır
for server in web1 web2 web3; do
    echo "=== $server ==="
    ssh $server "systemctl status nginx"
done

Bu senaryo boyunca Ctrl+R, !$, Ctrl+Z/fg gibi kısayollar sayesinde panikte bile hızlı hareket edebilirsin.

Kısayolları Öğrenme Stratejisi

Tüm bu kısayolları bir anda öğrenmeye çalışmak işe yaramaz. Bunun yerine şu stratejiyi dene:

  • 1. Hafta: Sadece Ctrl+A, Ctrl+E, Ctrl+R ve Ctrl+W odaklan. Bunlar en yüksek getirili kısayollar.
  • 2. Hafta: !! ve !$ geçmiş kısayollarını ekle. Tab tamamlamayı daha aktif kullan.
  • 3. Hafta: Ctrl+K, Ctrl+U ve Ctrl+Y ile metin düzenleme pratiği yap.
  • 4. Hafta: Alias’larını oluşturmaya başla. Sık tekrar eden komutları belirle.
  • Devam eden süreç: fzf gibi araçları dene, tmux öğren.

Öğrendikten sonra kasıtlı pratik yapman gerekiyor. Ok tuşuna uzandığında kendini dur ve Ctrl+R ile aramayı dene. Backspace’e basmak yerine Ctrl+W’ya uzan. Bir süre sonra bu hareketler otomatik hale gelir.

Sonuç

Terminal verimliliği, tek bir sihirli komutla değil; küçük alışkanlıkların birikmesiyle gelir. Ctrl+R ile geçmiş araması yapmak, Alt+F ile kelime kelime ilerlemek, Ctrl+W ile gereksiz karakterleri temizlemek… Bunların her biri tek başına küçük ama toplamda muazzam bir fark yaratır.

Burada anlattıklarımın tamamını bugün uygulamak zorunda değilsin. Hangi kısayolun sana en çok zaman kazandıracağını düşün ve oradan başla. Geçmiş araması için Ctrl+R öğrenmek büyük ihtimalle tek kısayol olarak bile haftada saatler kazandırabilir.

Zamanla bu kısayollar ikinci doğan haline gelir. O noktada terminal artık bir araç değil, bir uzantın gibi hissettirmeye başlar. Ve bu his, sistem yöneticisi olarak en verimli hissettiğin anların başında gelir.

Yorum yapın